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

Vue+Laravel Passport认证API请求401未授权问题求助

解决Laravel Passport登录后Vue Axios请求401未授权问题

我帮你梳理几个关键排查点,按顺序检查应该能定位并解决这个问题:

一、确认Axios自动携带Authorization Token

Laravel Passport的前端集成核心是让Axios在每次请求时自动带上Bearer Token,你需要检查以下细节:

  1. 检查bootstrap.js的请求拦截器配置
    打开resources/js/bootstrap.js,确认是否添加了Passport的请求拦截器,用来从localStorage读取token并注入请求头:
window.axios.interceptors.request.use(function (config) {
    // 注意这里的key要和你登录时存储token的key一致
    config.headers.Authorization = 'Bearer ' + localStorage.getItem('access_token');
    return config;
});
  1. 确认登录成功后正确存储了token
    检查你的登录Vue组件,确保登录请求成功后把接口返回的token存入localStorage:
axios.post('/login', credentials)
    .then(response => {
        // 把接口返回的access_token存入本地存储
        localStorage.setItem('access_token', response.data.access_token);
        // 登录成功后的页面跳转逻辑
    })
    .catch(error => {
        console.error(error);
    });

二、检查Laravel后端Passport核心配置

  1. 用户模型是否引入HasApiTokens Trait
    打开app/User.php,确认已经引入并使用Passport的HasApiTokens trait:
use Laravel\Passport\HasApiTokens;
use Illuminate\Foundation\Auth\User as Authenticatable;

class User extends Authenticatable
{
    use HasApiTokens, Notifiable;
    // ... 其他代码
}
  1. AuthServiceProvider是否注册Passport路由
    打开app/Providers/AuthServiceProvider.php,确认boot方法里注册了Passport的OAuth路由:
public function boot()
{
    $this->registerPolicies();

    // 注册Passport的OAuth相关路由
    Passport::routes();
}
  1. 确认API Guard使用Passport驱动
    打开config/auth.php,检查guards下的api驱动是否设置为passport:
'guards' => [
    'web' => [
        'driver' => 'session',
        'provider' => 'users',
    ],

    'api' => [
        'driver' => 'passport',
        'provider' => 'users',
    ],
],

三、验证请求头是否正确发送

打开浏览器开发者工具(F12),切换到Network标签,发起/api/calendar请求后查看请求的Request Headers:

  • 确认存在Authorization: Bearer 你的token值这个字段
  • 如果没有这个字段,说明Axios拦截器未生效,回到第一步排查前端逻辑

四、测试Token有效性

如果请求头带了token仍返回401,可以用Postman直接测试:

  1. 发送POST请求到/oauth/token获取有效token(参数:grant_type=password、username=你的账号、password=你的密码、client_id=密码客户端ID、client_secret=客户端密钥)
  2. 用获取到的token发送GET请求到/api/calendar,手动添加请求头Authorization: Bearer 你的token
    • 如果Postman请求成功,说明后端配置正常,问题出在前端Axios的token携带逻辑
    • 如果Postman也返回401,说明token无效或后端Passport配置有遗漏,重新检查第二步的后端配置

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 06:52:37