Laravel 11使用Sanctum请求/api/user返回unauthenticated问题求助
Laravel Sanctum 认证失败问题排查
问题场景
练习Laravel Sanctum时,已成功向localhost:8000/sanctum/csrf-cookie请求获取Cookie,但调用localhost:8000/api/user接口时返回unauthenticated,使用Laravel版本为11。
相关配置信息
.env 配置
SESSION_DRIVER=database SESSION_LIFETIME=120 SESSION_ENCRYPT=false SESSION_PATH=/ SESSION_DOMAIN=locahost SANCTUM_STATEFUL_DOMAINS=localhost,127.0.0.1
config/sanctum.php 配置
'stateful' => explode(',', env('SANCTUM_STATEFUL_DOMAINS', sprintf( '%s%s', 'localhost,localhost:3000,127.0.0.1,127.0.0.1:8000,::1', Sanctum::currentApplicationUrlWithPort() ))),
routes/api.php 配置
Route::get('/user', function (Request $request) { return $request->all(); })->middleware('auth:sanctum');
请求截图


排查修复方向
- 修正SESSION_DOMAIN拼写错误:
.env中SESSION_DOMAIN=locahost存在拼写错误,应改为SESSION_DOMAIN=localhost,错误的域名配置会导致会话Cookie无法被服务端识别。 - 完成用户登录流程:
auth:sanctum中间件要求用户先通过登录接口(如自定义的/login)完成身份认证,仅获取CSRF令牌无法完成认证,必须确保会话中存在已认证的用户信息。 - 携带正确的CSRF请求头:调用
/api/user时,需在请求头中添加X-XSRF-TOKEN,值为之前获取的CSRF令牌的实际内容(而非Cookie名称)。 - 确认会话Cookie已携带:检查
/api/user请求中是否包含laravel_sessionCookie,浏览器通常自动携带,若使用Postman等工具需开启Cookie自动保存或手动添加。
内容的提问来源于stack exchange,提问作者Aisakk
相关产品推荐
相关产品推荐

