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

Laravel搭配Sanctum+Fortify请求api/user返回401未授权问题求助

问题排查及解决步骤

1. 优先修正域名拼写错误(核心问题)

你的.env配置中存在明显的拼写不一致:

  • APP_URL配置为http://curriculum.test(正确拼写:curriculum)
  • 但SANCTUM_STATEFUL_DOMAINS和SESSION_DOMAIN中填写的是curriculim.test(错误拼写:curricim)
    该错误会直接导致Sanctum无法识别有效会话域,授权校验失败,先将这两处的拼写修正为和APP_URL一致的curriculum.test即可。

2. 补充前端axios全局配置

必须开启跨域带凭证配置,否则请求不会携带会话cookie回传后端:
在前端axios初始化位置添加如下代码:

axios.defaults.withCredentials = true

你当前的请求逻辑没有问题,缺少该配置会导致会话cookie无法正常传递,触发401错误。

3. 校验后端中间件配置

检查app/Http/Kernel.php文件中的api中间件组,确保已经添加Sanctum的状态校验中间件,且放在中间件组首位:

'api' => [
    \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class,
    'throttle:api',
    \Illuminate\Routing\Middleware\SubstituteBindings::class,
],

4. 校验路由配置

检查routes/api.php中/api/user路由是否正确使用了auth:sanctum中间件:

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

5. 其他兼容校验点

  • 如果你实际请求的域名为mydomain.test,需要将该域名也添加到SANCTUM_STATEFUL_DOMAINS和SESSION_DOMAIN配置中
  • 本地测试如果不需要跨子域,可以将SESSION_DOMAIN留空,避免域匹配失败
  • 所有配置修改后执行php artisan config:clear清除配置缓存生效

内容的提问来源于stack exchange,提问作者Jarliev Pérez

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 18:57:02