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

Laravel 8.54 + Sanctum 2.15生产环境401未认证错误求助

解决Laravel Sanctum生产环境401未认证错误

针对本地环境正常、生产环境调用/customer路由返回401的问题,按以下步骤排查修复:

1. 修正Sanctum守卫的用户提供者配置

在config/auth.php中,确保sanctum守卫使用customers作为用户提供者(匹配你的Customer模型):

'guards' => [
    // 保留原有customer守卫配置
    'customer' => [
        'driver' => 'session',
        'provider' => 'customers'
    ],
    // 添加/修改sanctum守卫配置
    'sanctum' => [
        'driver' => 'sanctum',
        'provider' => 'customers',
    ],
],
'providers' => [
    'customers' => [
        'driver' => 'eloquent',
        'model' => App\Models\Customer::class,
    ]
]

2. 明确指定Sanctum守卫获取认证用户

在AuthenticatedCustomer方法中,明确使用sanctum守卫获取用户,避免默认守卫不匹配:

public function AuthenticatedCustomer(){
    return response()->json(['customer' => Auth::guard('sanctum')->user()]);
}

3. 检查生产环境.env关键配置

确保生产环境.env文件中以下配置正确:

  • SESSION_DOMAIN:设置为你的生产环境域名(例如yourdomain.com,不要加http/https前缀)
  • SANCTUM_STATEFUL_DOMAINS:设置为生产环境域名(API场景可临时设为*测试,正式环境建议指定具体域名)
  • APP_URL:设置为生产环境完整HTTPS/HTTP地址(例如https://yourdomain.com)

4. 确认请求头的Token传递规范

调用/customer接口时,必须在请求头中携带正确格式的认证Token:

Authorization: Bearer {登录接口返回的plainTextToken}

注意:Bearer与Token之间必须有一个空格,且Token需完整复制,不能包含多余空格或换行。

5. 验证生产环境数据库迁移

确认生产环境已执行Sanctum迁移命令,确保personal_access_tokens表存在:

php artisan migrate

6. 排查HTTPS环境下的请求头问题(若生产环境使用HTTPS)

若生产环境启用HTTPS,需确保:

  • 服务器配置未丢失或篡改Authorization请求头
  • APP_URL以https://开头

内容的提问来源于stack exchange,提问作者Muhammad Awais Javaid

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 14:56:07