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

Laravel Sanctum在Postman中调用受保护路由返回未认证问题排查

Laravel Sanctum Postman认证失败排查要点

以下是可能导致你调用受auth:sanctum保护的路由时提示未认证的原因及排查方向:

  • Postman请求未正确携带认证凭证

    1. 确保所有请求(包括Login和受保护路由)都自动携带Cookie:在Postman的设置中开启「Automatically send cookies」,或者检查集合的Cookie配置,确认laravel_session和XSRF-TOKEN这两个Cookie被正确传递。
    2. 登录请求和受保护路由必须携带X-XSRF-TOKEN请求头,值为Cookie中XSRF-TOKEN的解码后内容。可以修改预请求脚本,将解码后的值存入环境变量:
      pm.environment.set("xsrf-token", decodeURIComponent(pm.cookies.get("XSRF-TOKEN")));
      
      然后在请求头中添加X-XSRF-TOKEN: {{xsrf-token}}。
  • 会话与Sanctum域名配置冲突

    1. 检查SESSION_DOMAIN配置:当前设置为localhost,但后端运行在localhost:5000、前端在localhost:3000,跨端口场景下可尝试将SESSION_DOMAIN设为空(.env中写SESSION_DOMAIN=),让Laravel自动适配请求域名。
    2. 确认SANCTUM_STATEFUL_DOMAINS包含正确的来源:由于Postman请求的Origin可能不是localhost:3000,可在Postman的请求头中手动添加Origin: http://localhost:3000,或者将SANCTUM_STATEFUL_DOMAINS临时改为localhost:5000,localhost:3000覆盖前后端域名。
  • 登录请求未成功建立认证会话
    检查Login请求的响应头,确认存在Set-Cookie字段,其中包含laravel_session(HttpOnly属性)和XSRF-TOKEN,同时确保Login请求返回了成功的用户认证数据,排除登录逻辑本身的错误。

  • 路由与中间件配置问题

    1. 确认api.php中受保护路由正确使用auth:sanctum中间件:
      Route::middleware('auth:sanctum')->group(function () {
          // 受保护的API路由
      });
      
    2. 检查app/Http/Kernel.php的api中间件组是否包含\Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class,这是SPA状态认证的必需中间件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 21:06:28