【问题标题】:Laravel/Passport get guard user idLaravel/Passport 获取守卫用户 id
【发布时间】:2019-11-12 20:20:07
【问题描述】:

我使用passport 并且我想用于多个auth 所以我通过这个topic 完成了这个,只是我使用名称作为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

它返回一个错误:

Auth guard [Agents] 未定义

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

编辑:我也试过了

php artisan config:clear  
php artisan config:cache

【问题讨论】:

    标签: php laravel laravel-passport


    【解决方案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

    【讨论】:

    • 正如我所说的已经尝试过这个,这个返回Auth guard [agents] is not defined
    • dd(config('auth.guards')); 的输出是什么?
    • array:2 [ "web" => array:2 [ "driver" => "session" "provider" => "users" ] "api" => array:3 [ "driver" => "passport" "provider" => "agents" "hash" => false ] ]
    • 啊,这就是它不理解的原因!
    • 好的,所以您的config.auth.providers 数组中的某些内容配置错误。当它尝试注册SessionGuard 但没有获得driver 时,就会发生错误。相反,它得到了null,这导致了您的问题。直到今天晚上,我才能花更多的时间在这上面,祝你好运!我希望我能有所帮助...
    猜你喜欢
    • 2018-03-28
    • 2023-04-03
    • 2018-07-03
    • 2014-12-25
    • 2019-09-30
    • 2016-04-26
    • 2014-10-27
    • 2018-08-31
    • 2020-07-12
    相关资源
    最近更新 更多