• axios拦截器加autho验证,接口失效后重新请求的写法


    //request拦截
    service.interceptors.request.use(
      request => {
        let { current } = router.history;
        if (
          store.getters["userStore/getToken"] &&
          current.name !== "Login" &&
          request.url != "/login/token/refresh"
        ) {
          //非登陆界面并且不是调用刷新接口并且本地要有token才可以加autho验证
          request.headers.Authorization = `Bearer ${
            store.getters["userStore/getToken"]
          }`;
        }
        return request;
      },
      error => {
        console.error(error);
        return error;
      }
    );
    
    //response拦截
    service.interceptors.response.use(
      response => {
        return response;
      },
      async error => {
        try {
          if (error && error.response) {
            // debugger;
            switch (error.response.status) {
              case 401:
                // 返回 401 清除token信息并跳转到登录页面也可以用这个逻辑
                let refreshToken = store.getters["userStore/getParamRefreshToken"];
                let { data } = await post("login/token/refresh", {
                  refreshToken
                });
                if (data.code === 200) {
                  //刷新token成功后,获取新的token,覆盖旧的token,然后返回到报错的页面刷新掉
                  store.commit("userStore/setParamToken", data.result.access_token);
                  //就是重新调用接口获取数据
                  var backoff = new Promise(resolve => {
                    resolve();
                  });
                  return backoff.then(r => {
                    return service(error.config);
                  });
                  // window.location.reload();
                } else {
                  //refreshtoken失效的话,就直接到登陆页面
                  router.push("/login");
                }
                return error;
              default:
                console.error(error);
                return error;
            }
          } else {
            console.error(error);
            return error;
          }
        } catch (error) {
          console.error(error);
        }
      }
    );
  • 相关阅读:
    代码重构技术方法
    《算法导论》为什么经典
    BeagleBone Black教训四局:简单LED对照实验
    linux(Ubuntu)安装QQ2013
    ubuntu卸载qq2012
    android弧形进度条,有详细注释的,比较简单
    Android自定义进度条
    AndroidのUI设计研究(一)——自定义ProgressBar
    介绍几个工作开发中封装的好用的android自定义控件
    android自定义viewgroup之我也玩瀑布流
  • 原文地址:https://www.cnblogs.com/llcdbk/p/12781587.html
Copyright © 2020-2023  润新知