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

时间:2019-11-19 08:38:21

标签: php laravel laravel-passport

passport上使用Laravel 6,它可以与users一起正常工作,现在我想为passport设置admins,在这里我称为座席。因此,我以这种方式(基于this)做到了:

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);

这将向我返回用户详细信息,并且工作正常,然后我以相同的令牌登录为admin,然后运行:

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

它也向我返回代理商详细信息!与我用于api_token的{​​{1}}相同。我用users进行了全部测试。相反,它不应使用用户令牌重新运行代理详细信息。

1 个答案:

答案 0 :(得分:0)

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

所以我改变了:

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

根据那篇文章的第api_token栏,这解决了我的问题。我认为passport并不能解决此问题,您需要设置tokensession才能解决此问题。