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

Laravel 8 + Sanctum Postman调用/api/login成功但后续接口未认证问题

Laravel Sanctum Postman 认证异常解决方案

问题根因

你遇到的是Postman模拟SPA Sanctum认证时,未完整携带必要认证信息导致的鉴权失败,Axios能正常访问是因为默认配置了withCredentials: true自动携带Cookie,同时会自动处理XSRF-TOKEN头。

分步解决操作

1. 先确认Laravel侧配置正确

  • .env文件添加/修改以下配置:
    SESSION_DOMAIN=localhost
    SANCTUM_STATEFUL_DOMAINS=localhost:8000,localhost
    
  • 如果你将/api/login路由定义在routes/api.php中,需要给该路由单独添加web中间件,因为API默认中间件组不带会话启动逻辑,无法生成登录态:
    Route::post('/login', [AuthController::class, 'login'])->middleware('web');
    

2. 修正Postman配置

  • 你当前的预请求脚本无需修改,建议把该脚本配置到整个接口集合的「Pre-request Script」栏,不要只配置给单个登录接口,这样所有请求都会自动刷新CSRF令牌
  • 给整个接口集合统一添加公共请求头,避免每个接口单独配置:
    头字段名字段值说明
    Acceptapplication/json必须配置, Sanctum通过该头识别SPA请求
    X-XSRF-TOKEN{{xsrf-token}}读取预请求脚本存入环境变量的CSRF令牌
  • 开启Postman Cookie自动携带:
    点击请求页右上角的「Settings」按钮,开启Send cookies with request和Automatically follow redirects选项

3. 验证生效步骤

  • 打开Postman的Cookie管理器,删除所有localhost域下的旧Cookie,避免旧无效会话干扰
  • 先发送一次登录请求,确认返回登录成功提示,且Cookie管理器中已存在laravel_session、XSRF-TOKEN两个Cookie
  • 直接发送其他需要鉴权的API接口,即可正常获取响应

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 17:24:02