zoukankan      html  css  js  c++  java
  • axios 请求拦截并在 token 过期后自动续订后重调当前请求

    import cacheHelper from '../helper/cacheHelper';
    import axios from "axios";
    import env from "../http/env";
    import { Loading } from 'element-ui';
    import { WindowsToaster } from "node-notifier";
    let loading;
    const service = axios.create({
      baseURL: env.dev.baseUrl,
      settimeout: 3000,
    });
    
    const request = function () {
      var parameters = [];
      var exp = [];
      for (var i = 0; i < arguments.length; i++) {
        parameters.push(arguments[i]);
        exp.push("parameters[" + i + "]");
      }
      var exp = "service(" + exp.join(",") + ")";
      var promise = eval(exp);
      promise.realThen = promise.then;  //拦截then方法
      promise.requestParameters = parameters;
      promise.requestExpression = exp;
      promise.then = function (arg) {
        return new Promise(resolve => {
          promise.realThen(result => {
            if (result.code != 401) {
              promise.realThen(arg);
              return;
            }
            axios.get(env.dev.baseUrl + "/authorize/webLogin")
              .then(function (response) {
                if (response.data.code == "0") {
    
                  console.log("auto login");
    
                  cacheHelper.setToken(response.data.data.token);
    
                  setTimeout(function () {
                    cacheHelper.getBasicInfo();
                  }, 1);
    
                  var parameters = promise.requestParameters;
                  var exp = promise.requestExpression;
                  eval(exp).then(arg);  //重调then方法
                }
              });
          });
        });
      };
      return promise;
    }
    
    export default request;
    桂棹兮兰桨,击空明兮溯流光。
  • 相关阅读:
    StringUtils
    改变windows锁屏时间
    data-toggle和data-target
    Bootstrap元素居中
    爬虫软件/程序
    nfs服务器搭建
    浏览器控制台console对象的使用
    F7
    Ubuntu18.04 安装Docker【转】
    mysql出现ERROR1698(28000):Access denied for user root@localhost错误解决方法【转】
  • 原文地址:https://www.cnblogs.com/nanfei/p/15541191.html
Copyright © 2011-2022 走看看