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

Laravel Sanctum问题:传Bearer Token但$request->user()返回null

问题原因及解决方案

1. 核心原因:受保护路由未启用API认证中间件

你的/api/user路由没有应用Laravel Sanctum的认证中间件,导致请求不会验证Bearer Token,因此$request->user()返回null。

修复方法:

给/api/user路由添加auth:sanctum中间件:

Route::post('/user', function(Request $request) {
    var_dump($request->user());
    return response()->json($request->user());
})->middleware('auth:sanctum');

2. 其他可能的验证点

如果添加中间件后仍有问题,检查以下内容:

  • User模型是否引入HasApiTokens trait
    确保App\Models\User类中包含Sanctum的trait:

    use Laravel\Sanctum\HasApiTokens;
    
    class User extends Authenticatable
    {
        use HasApiTokens, HasFactory, Notifiable;
        // ...
    }
    
  • 确认Sanctum已正确配置

    1. 检查config/auth.php中api guard的驱动是否为sanctum:
      'guards' => [
          'web' => [
              'driver' => 'session',
              'provider' => 'users',
          ],
          'api' => [
              'driver' => 'sanctum',
              'provider' => 'users',
              'hash' => false,
          ],
      ],
      
    2. 确认已运行Sanctum的迁移命令:
      php artisan migrate
      
  • 验证请求头是否正确传递
    再次确认Authorization头格式:Bearer {token},Bearer与token之间必须有一个空格,且无多余字符。

内容的提问来源于stack exchange,提问作者StarkesWeb

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 21:52:44