簡體   English   中英

Laravel Sanctum 驗證中間件 auth:sanctum 不同 model

[英]Laravel Sanctum authenticate middleware auth:sanctum for different model

我在我的 Laravel 9 項目中使用 Laravel Sanctum 3.x。 我正在構建一個微服務功能,需要通過我的微服務Microservice對它們進行身份驗證,我在其中添加了HasApiTokens並創建了我的令牌。

我創建了額外的身份驗證配置:

'guards' => [
    'api' => [
        'driver' => 'session',
        'provider' => 'users',
    ],
    'web' => [
        'driver' => 'session',
        'provider' => 'users',
    ],
    'microservice' => [
        'driver' => 'session',
        'provider' => 'microservices',
    ],
],

'providers' => [
    'users' => [
        'driver' => 'eloquent',
        'model' => App\Models\User::class,
    ],
    'microservices' => [
        'driver' => 'eloquent',
        'model' => App\Models\Microservice::class,
    ],

    // 'users' => [
    //     'driver' => 'database',
    //     'table' => 'users',
    // ],
],

然后,在我的 controller 中,我想使用我的微服務身份驗證檢查而不是默認的auth:sanctum中間件檢查我對添加什么感到困惑?

這是我的 controller:

<?php

namespace App\Http\Controllers\Hub;

use App\Http\Controllers\Controller;
use App\Http\Responses\ApiSuccessResponse;
use App\Http\Responses\ApiErrorResponse;
use App\Http\Responses\ApiValidationErrorResponse;
use Illuminate\Http\Request;
use App\Models\Microservice;

class HubController extends Controller
{
    /**
     * Instantiate a new HubController instance.
     *
     * @return void
     */
    public function __construct()
    {
        // TODO: how to change to Microservice auth?
        $this->middleware('auth:sanctum');
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function __invoke(Request $request)
    {
        return new ApiSuccessResponse(null, [
            'message' => 'Hub controller - post'
        ]);
    }
}

我是否只需要將auth:sanctum更改為auth:microservice然后它就會驗證令牌?

您需要將保護傳遞給您的身份驗證邏輯。

if(auth()->guard('microservices')->attempt($request->only('email','password'))) {
    return auth()->guard('admin')->user(); }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM