Laravel 护照 api 令牌适用于所有人

Laravel passport api token works for all

Laravel 6 上使用 passport 并且它与 users 一起工作正常 我想为 admins 设置 passport 我在这里打电话给代理。所以我是这样做的(基于):

Route::middleware('auth:agent')->group(function () {

控制器:

return Auth::guard('agent')->user();

和auth.php:

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

        'api' => [
            'driver' => 'passport',
            'provider' => 'users',
            'hash' => false,
        ],
        'agent' => [
            'driver'   => 'passport',
            'provider' => 'agents',
        ],
    ],

...

'providers' => [
        'users' => [
            'driver' => 'eloquent',
            'model' => App\User::class,
        ],
        'agents' => [
            'driver' => 'eloquent',
            'model' => App\Agent::class,
        ],
    ],

所以我以用户身份登录,并设置 api 令牌和 运行 这个:

$user = Auth::user();
return response()->json(['success' => $user], $this-> successStatus);

这个 return 我的用户详细信息并且工作正常,然后我使用相同的令牌以管理员身份登录,并且 运行:

return Auth::guard('agent')->user();

它return我代理详情呢!使用与 users 相同的 api_token。我用 postman 测试了所有内容。它不应该用用户令牌 ret运行 代理详细信息,反之亦然。

好吧,虽然我没有得到任何答案,但我尝试自己解决这个问题,我搜索了很多 none 可用的解决方案。我决定将 token 用作管理员用户 driver (basic Laravel auth) (agents)

所以我改变了:

    'agent' => [
        'driver'   => 'token', // change passport to token
        'provider' => 'agents',
        'hash' => true,
    ],

根据那篇文章制作的 api_token 专栏,这解决了我的问题。我认为 passport 没有改变解决这个问题,你需要设置 tokensession 才能得到这个。