You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel 9中Passport在web路由无法获取Auth::user()的问题求助

Laravel Passport Web路由认证问题解决方案

问题根源

将web guard的driver直接改为passport是错误配置——Passport的passport驱动仅适配API的token认证场景,Web路由默认依赖session认证体系,两者逻辑不兼容,导致系统无法识别已登录状态。

具体修复步骤

1. 恢复web guard的默认配置

修改config/auth.php,将web guard的driver改回session:

'guards' => [
    'web' => [
        'driver' => 'session', // 改回session驱动
        'provider' => 'users',
    ],
    'api' => [
        'driver' => 'passport',
        'provider' => 'users',
    ],
],

2. 按需配置Web路由的Passport认证

如果确实需要在Web路由中使用Passport的token认证,需做以下调整:

  • 将Web路由的中间件指定为auth:api,而非默认的auth:
Route::middleware('auth:api')->group(function () {
    Route::name('google.index')->get('google', [ExampleTwoController::class, 'index']);
});
  • 在app/Http/Kernel.php的web中间件组中添加Passport的cookie token注入中间件,确保请求自动携带认证token:
\Laravel\Passport\Http\Middleware\CreateFreshApiToken::class,

3. 适配登录流程

  • 若使用默认Web登录(session认证):无需修改guard配置,直接使用auth中间件即可正常获取Auth::user()。
  • 若使用Passport OAuth流程登录Web应用:需确保已执行Passport::routes()注册授权路由,并使用Passport提供的登录逻辑完成认证。

4. 清除缓存确保配置生效

执行命令刷新配置缓存:

php artisan config:clear
php artisan cache:clear

内容的提问来源于stack exchange,提问作者B.T

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 12:10:27