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

Laravel 6使用Passport访问auth:api保护路由报401 Unauthorized错误怎么解决

问题排查与解决方案

1. 补全Axios请求的认证配置

你当前的Axios请求未携带Passport要求的认证凭证,这是401错误最常见的原因,分两种场景处理:

  • 如果是令牌认证模式(前后端分离/跨域场景):
    登录接口获取到访问令牌后,给Axios设置全局认证头:
    // 登录成功获取token后执行一次即可
    axios.defaults.headers.common['Authorization'] = `Bearer ${你的访问令牌变量}`;
    
  • 如果是同域Cookie认证模式(前端和Laravel服务同域名):
    首先在app/Http/Kernel.php的web中间件组中加入Passport的Cookie加密中间件:
    \Laravel\Passport\Http\Middleware\CreateFreshApiToken::class,
    
    再给Axios开启跨域凭证携带配置:
    axios.defaults.withCredentials = true;
    

2. 修正Passport路由配置

你之前给Passport::routes()加auth:api中间件的操作是错误的,Passport自带的oauth路由(含令牌下发接口)本身是给未认证用户调用的,加认证中间件会导致根本拿不到有效令牌,直接改回默认配置即可:

// AuthServiceProvider中只保留这行即可,不需要额外加前缀和中间件
Passport::routes();

3. 确认配置生效

执行以下命令清理所有缓存,避免修改的auth.php等配置未生效:

php artisan cache:clear
php artisan config:clear

4. 校验令牌有效性

如果配置完上述步骤仍报错,可直接查询数据库oauth_access_tokens表,确认你使用的令牌revoked字段为0(未被撤销)、expires_at字段值晚于当前时间(未过期)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 22:18:04