Laravel/Passport 获取守卫用户id

Laravel/Passport get guard user id

我使用 passport 并且我想用于多个 auth 所以我通过这个 完成了这个,只是我使用名称 agent 而不是 admin,我现在要做的是获取管理员 ID。

这是我的代码:

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

还有这些名字agentagentsAgents

它return我一个错误:

Auth guard [Agents] is not defined

抱歉,我是 Laravel 的新手,有什么想法吗?

编辑:我也试过

php artisan config:clear  
php artisan config:cache

您设置的守卫名称为 "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