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

使用Sanctum Token请求域名API接口返回Unauthenticated错误

Laravel Sanctum 域名访问报Unauthenticated修复方案

核心错误点

你遇到的问题由3个配置/使用错误共同导致:

  • .env中Sanctum配置键名写错,正确键名为SANCTUM_STATEFUL_DOMAINS(复数形式),你当前使用的是单数SANCTUM_STATEFUL_DOMAIN,配置根本未生效
  • 域名配置格式错误,SANCTUM_STATEFUL_DOMAINS和SESSION_DOMAIN两个配置项仅需填写纯域名,不需要带协议头(http://)、路径后缀(/mark/live)
  • Postman请求时Token传递方式不规范,使用个人访问令牌认证时,必须通过Authorization请求头传递,不能依赖Cookie认证

修复步骤

1. 替换.env中错误配置

删除原有Sanctum和Session相关配置,替换为以下内容:

# 多域名用英文逗号分隔,本地+域名环境可同时配置
SANCTUM_STATEFUL_DOMAINS=localhost,127.0.0.1,sotun.com
SESSION_DOMAIN=sotun.com

注意:即使项目部署在/mark/live子路径下,上述两个配置也不需要添加子路径,子路径属于路由前缀配置范畴,和Sanctum域名校验规则无关。

2. 清除项目配置缓存

在项目根目录执行以下命令,清除旧配置缓存让新配置生效:

php artisan config:clear
php artisan route:clear
php artisan cache:clear

3. 修正Postman认证参数传递

你登录接口返回的plainTextToken属于Sanctum个人访问令牌,请求受保护路由时按以下方式传递:

  • 打开Postman对应请求的Authorization标签页
  • 认证类型选择Bearer Token
  • 将登录接口新生成的Token粘贴到Token输入框中
  • 不要手动在Cookie栏添加任何认证参数,也不要复用修改配置前生成的旧Token

4. (子路径部署必改)确认路由前缀配置

如果项目部署在/mark/live子路径下,打开app/Providers/RouteServiceProvider.php,确认API路由前缀配置匹配实际访问路径:

Route::prefix('mark/live/api')
    ->middleware('api')
    ->group(base_path('routes/api.php'));

如果路由前缀不匹配,请求不会经过Sanctum认证中间件,会直接返回未认证错误。


验证方法

  1. 重新调用登录接口获取最新Token
  2. 按上述要求配置Bearer Token请求头
  3. 发起GET请求访问http://sotun.com/mark/live/api/user即可正常返回用户信息

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 08:42:13