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已正确配置
- 检查
config/auth.php中api guard的驱动是否为sanctum:'guards' => [ 'web' => [ 'driver' => 'session', 'provider' => 'users', ], 'api' => [ 'driver' => 'sanctum', 'provider' => 'users', 'hash' => false, ], ], - 确认已运行Sanctum的迁移命令:
php artisan migrate
- 检查
验证请求头是否正确传递
再次确认Authorization头格式:Bearer {token},Bearer与token之间必须有一个空格,且无多余字符。
内容的提问来源于stack exchange,提问作者StarkesWeb
相关产品推荐
相关产品推荐

