【问题标题】:Laravel passport api token works for allLaravel 护照 API 令牌适用于所有人
【发布时间】:2020-03-14 17:14:42
【问题描述】:

Laravel 6 上使用passport 并且它与users 一起工作正常现在我想为admins 设置passport 我在这里打电话给代理。于是我就这样做了(基于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);

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

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

它也会返回我的代理详细信息!与我用于usersapi_token 相同。我用postman 测试了所有内容。它不应该使用用户令牌重新运行代理详细信息,反之亦然。

【问题讨论】:

    标签: php laravel laravel-passport


    【解决方案1】:

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

    所以我改变了:

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

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

    【讨论】:

      猜你喜欢
      • 2020-02-04
      • 2019-05-21
      • 2019-05-15
      • 2020-01-14
      • 1970-01-01
      • 1970-01-01
      • 2019-09-13
      • 2019-11-17
      • 2018-08-04
      相关资源
      最近更新 更多