刷新token后继续上次失败的请求

场景描述

  • 页面请求接口时,后台返回token过期的状态码,在拦截器中调接口刷新token,并继续上次的页面请求,将结果返回到页面
    响应拦截器中的关键代码
      
      if (token过期的状态码) {
        return new Promise((resolve, reject) => {
          // 调接口刷新token
          net.post("xxx/refreshToken", data, res => {
            if (刷新token接口成功的状态码) {
              // 存入sessionStorage
              sessionStorage("token", res.data.token);
              // 将headers中的token替换
              response.config.headers.token = res.data.token
              response.config.headers["content-type"] = "application/json;application/x-www-form-urlencoded;charset=UTF-8;application/javascript";
              // 传递给then
              resolve(response.config)
            }
          })
        }).then(config => {
          return new Promise((resolve, reject) => {
            // 继续上次的请求,将结果返回到页面,页面通过.then接收结果
            axios(config).then(res => {
              resolve(res)
            })
          })
        })
      } else {
        // console.log('拦截器,正常返回')
        return response;
      }
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。