axios自动刷新token

根据refreshToken刷新Token

问题描述:axios使用token访问时,token如果失效,则需要使用refreshToken来刷新Token得到新的Token
这时可以考虑在axios的响应后,对状态做处理,
处理逻辑:返回响应token后显示失效——>使用refreshToken接口,刷新token——>对refreshToken接口的返回数据做处理——>再次访问显示token失效的接口

instance.interceptors.response.use(
  function (response) {
    // 对返回的数据处理
    // 条件判断
    if (response.data !== null ) {
      if (response.data.message.match(RegExp("token expired"))) {
         //刷新接口可自己定义
        return refreshToken()
           //对refresh接口返回进行处理
          .then((res) => {
            //如果请求成功,则刷新成功
            if (res.data.status === 1) {
              setToken(res.data.token);
              //再次请求以前请求失效的借口
              return axios({
                method: response.config.method,
                data: response.config.data,
                url: response.config.url,
                baseURL: response.config.baseURL,
                headers: {
                  Authorization: `${getToken()}`,
                },
              })
                .then((res) => {
                  return res.data;
                })
                .catch((error) => {
                  message.error("网络连接错误");
                });
            }
            //如果刷新token的请求失败,则表示refreshToken失效或者错误,则请用户自己重新登录
            if (res.data.status === 0) {
              message.error("token无效,请重新登陆")}
          })
          .catch((error) => {
            message.error("网络连接错误");
          });
      } 
    }
    return response.data;
  },
);
//刷新token接口
function refreshToken() {
  return axios({
    method: "get",
    url: `refresh_token?refresh_token=${getrefresh_token()}`,
  });
}

在实际的使用中可能会遇到再次携带失效token时config会乱码的问题,这个问题将在下一个博客里说明。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值