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

Vue项目结合Laravel Passport登录后如何全局配置Axios的Authorization请求头

问题根因

你在main.js中配置的Axios全局头逻辑仅会在项目首次加载时执行一次:登录前localStorage中不存在access_token,因此初始化阶段不会给Axios设置Authorization头。登录成功后你仅将token存入localStorage和Vuex,没有同步更新Axios的全局默认头配置,因此跳转后的请求不会携带认证头,只有刷新页面重新执行main.js逻辑后才会生效。

方案1:最小改动适配

直接在Vuex的登录成功逻辑中同步更新Axios全局头,修改store中的loginaction即可:

login({ commit }, credentials) {
    return axios.post("http://127.0.0.1:8000/api/login", credentials).then(( res ) => {
        const token = res.data.data.token
        localStorage.setItem('access_token', token);
        // 新增:同步更新Axios全局认证头
        axios.defaults.headers.common['Authorization'] = 'Bearer ' + token;
        commit("setToken", res.data.data);
    });
}

方案2(更推荐):全局请求拦截器统一处理

该方案不需要在多场景手动维护头配置,所有请求发出前会自动读取最新的token挂载,适配后续token刷新、多场景登录等需求:
替换main.js中原有的全局头配置代码,添加Axios请求拦截器:

// 删掉原有判断token设置全局头的代码,替换为如下拦截器逻辑
axios.interceptors.request.use(
  config => {
    const token = localStorage.getItem('access_token')
    if (token) {
      config.headers.Authorization = 'Bearer ' + token
    }
    return config
  },
  error => {
    return Promise.reject(error)
  }
)

该方案的优势:

  • 无需在登录、刷新token等场景手动修改Axios默认配置,拦截器每次请求都会自动读取最新的token
  • 后续新增全局请求逻辑(如请求参数加密、公共参数挂载等)均可统一在拦截器中维护

补充优化

如果有退出登录逻辑,清除token时需要同步清除全局认证头,避免无效请求携带过期token:

// 退出登录逻辑中添加如下代码
localStorage.removeItem('access_token')
delete axios.defaults.headers.common['Authorization']
// 同步清空Vuex中的token、用户信息状态

内容的提问来源于stack exchange,提问作者Myo Paing Thu

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 01:39:01