Axios拦截器使用旧的令牌而不是新获取的访问令牌进行重试。
创始人
2024-09-28 21:01:08
0

在Axios中,你可以通过使用拦截器来处理请求和响应。为了解决Axios拦截器使用旧的令牌而不是新获取的访问令牌进行重试的问题,你可以使用以下代码示例:

import axios from 'axios';

// 创建一个Axios实例
const api = axios.create({
  baseURL: 'https://api.example.com',
});

// 请求拦截器
api.interceptors.request.use(
  (config) => {
    // 在发送请求之前,检查是否有新的访问令牌
    const newAccessToken = getNewAccessToken();
    if (newAccessToken) {
      // 如果有新的访问令牌,将其设置到请求头中
      config.headers['Authorization'] = `Bearer ${newAccessToken}`;
    }
    return config;
  },
  (error) => {
    return Promise.reject(error);
  }
);

// 响应拦截器
api.interceptors.response.use(
  (response) => {
    return response;
  },
  (error) => {
    // 如果响应返回401错误(未授权),并且没有进行过重试
    if (error.response.status === 401 && !error.config._retry) {
      error.config._retry = true;

      // 获取新的访问令牌
      return getNewAccessToken()
        .then((newAccessToken) => {
          // 如果成功获取新的访问令牌,将其设置到请求头中并重试请求
          error.config.headers['Authorization'] = `Bearer ${newAccessToken}`;
          return axios(error.config);
        })
        .catch((error) => {
          return Promise.reject(error);
        });
    }

    return Promise.reject(error);
  }
);

// 示例API请求
api.get('/data')
  .then((response) => {
    console.log(response.data);
  })
  .catch((error) => {
    console.error(error);
  });

// 模拟获取新的访问令牌
function getNewAccessToken() {
  // 返回一个Promise,用于模拟异步操作
  return new Promise((resolve, reject) => {
    // 模拟异步获取新的访问令牌
    setTimeout(() => {
      const newAccessToken = 'new_access_token';
      resolve(newAccessToken);
    }, 2000);
  });
}

在上面的示例中,我们创建了一个名为api的Axios实例,并添加了请求和响应拦截器。在请求拦截器中,我们检查是否有新的访问令牌,并将其设置到请求头中。在响应拦截器中,如果响应返回401错误(未授权),并且没有进行过重试,我们会获取新的访问令牌,并将其设置到请求头中并重试请求。这样,即使在请求过程中访问令牌过期,我们也能够获取新的访问令牌并重试请求。

相关内容

热门资讯

透视app!手机脚本辅助软件,... 手机脚本辅助软件开挂教程视频分享装挂详细步骤在当今的网络游戏中,手机脚本辅助软件作为一种经典的娱乐方...
透视计算"摸一把跑得... 透视计算"摸一把跑得快有挂吗"开挂(透视)辅助插件(原来确实是有挂)-哔哩哔哩;摸一把跑得快有挂吗软...
透视好友!老友麻将有没有挂,s... 透视好友!老友麻将有没有挂,sohoo poker辅助,AI教程(有挂解惑)-哔哩哔哩 >>您好:软...
分享一款"闲逸有没有... 分享一款"闲逸有没有辅助软件功能"开挂(透视)辅助脚本(原来确实是有挂)-哔哩哔哩;1、不需要AI权...
玩家攻略!青橙竞技游戏辅助,呱... 青橙竞技游戏辅助是一款可以让一直输的玩家,快速成为一个“必胜”的ai辅助神器,有需要的用户可以加我微...
发现玩家"建德十三道... 发现玩家"建德十三道辅助"开挂(透视)辅助神器(一直确实是有挂)-哔哩哔哩;致您一封信;亲爱建德十三...
玩家亲测"全民内蒙古... 【福星临门,好运相随】;玩家亲测"全民内蒙古辅助"开挂(透视)辅助软件(原来是真的有挂的)-哔哩哔哩...
玩家必看秘籍!奇迹手游辅助,w... 【亲,奇迹手游辅助 这款游戏可以开挂的,确实是有挂的,很多玩家在这款奇迹手游辅助中打牌都会发现很多用...
我来教大家"微信多乐... 我来教大家"微信多乐跑胡子辅助"开挂(透视)辅助插件(一直是真的有挂)-哔哩哔哩;AI辅助机器人普及...
技巧知识分享"荆州圣... 技巧知识分享"荆州圣盛游戏辅助"开挂(透视)辅助下载(一直是真的有挂)-哔哩哔哩;荆州圣盛游戏辅助最...