Laravel / Passport获取警卫用户ID

时间:2019-11-12 10:39:36

标签: php laravel laravel-passport

我使用passport,并且要使用多个auth,所以我通过此topic完成了此操作,只是我将名称用作agent而不是{{1} },我现在想做的就是获取管理员ID。

这是我的代码:

admin

并且:

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

并且:

public function handle($request, Closure $next)
{
    config(['auth.guards.api.provider' => 'agents']);
    return $next($request);
}

因此,为了获得Route::group(['middleware' => ['auth.agent']], function() { ,我尝试了:

id

也使用这些名称return Auth::guard('Agent')->id; agent agents

返回一个错误:

  

未定义身份验证防护[特工]

对不起,我是Laravel的新手,知道吗?

编辑:我也尝试过

Agents

1 个答案:

答案 0 :(得分:1)

您设置的守卫名称为“ agents”,因此这是您应使用的方式。

我认为您完成的操作返回了SessionGuard对象,而不是您的用户模型。

尝试以下方法:

return Auth::guard('agents')->check(); # true
return Auth::guard('agents')->user()->id; # (int)

修正:

config/auth.php中更新guards数组

'guards' => [
    'agents' => [
        'driver'   => 'session',
        'provider' => 'agents',
    ],
]

或:使用Auth::guard('api')->user()->id