m0_60877809 2022-02-16 16:15 采纳率: 72.7%
浏览 105
已结题

vue中的拦截器 写了提示但是 在校验登录是否过期的时候 重复提示了



const config = {
  baseUrl: localConfig.url,
  timeOut: 15000
};

let server = new Server({
  baseUrl: config.baseUrl,
  timeOut: config.timeOut
});

server.bindLoading(Vue.$loading);

// 前后拦截
server.interceptors.request.use(requestSuccess, requestError);

server.interceptors.response.use(responseSuccess, responseError);

function requestSuccess(config) {
  // 开启遮罩层
  if (!config.hideLoading && config.show) {
    server.loading.show();
  }

  config.url = `${API_PREFIX}/${config.url}`;

  // 如果存在证书信息,则放到 header 里面
  if (localStorage.getItem('certInfo')) {
    config.headers.UKEY_SERIALNO = localStorage.getItem('certInfo');
  }
  return config
}

function requestError(error) {
  Promise.reject(error)
    .then(res => {})
    .catch(err => {
      if (err.config.show) {
        // 关闭弹窗
        server.loading.hide();
      }
    });

  return Promise.reject(error);
}

function responseSuccess(res) {
  if (res.config.show) {
    // 关闭弹窗
    server.loading.hide();
  }

  const status = res.status,
    code = res.data.errno;
  if (status === 200) {
    switch (code) {
      case 0: // 成功
        break;
      case -1: // 错误
        Message.warning(res.data.errmsg);
        break;
      case 401: // 参数不对
        Message.warning(res.data.errmsg);
        break;
      case 402: // 参数值不对
        Message.warning(res.data.errmsg);
        break;
      case 403: // 审核备注不能为空
        Message.warning(res.data.errmsg);
        break;
      case 501: // 请登录
        var isLogin = localStorage.getItem('loginName');
        if (isLogin != null) {
          Message.warning('登录过期,请登录');
          router.push({
            path: '/home/Login?t=' + Date.now()
          });
        } else {
          Message.warning('未登录,请登录');
          router.push({
            path: '/home/Login?t=' + Date.now()
          });
        }
        localStorage.clear();
        sessionStorage.clear();
        break;
      case 502: // 系统内部错误
        Message.warning(res.data.errmsg);
        break;
      case 503: // 业务不支持
        Message.warning(res.data.errmsg);
        break;
      case 504: // 更新数据已失效
        Message.warning(res.data.errmsg);
        break;
      case 505: // 更新数据失败
        Message.warning(res.data.errmsg);
        break;
      case 506: // 无操作权限
        Message.warning(res.data.errmsg);
        break;
      default:
        Message.warning(res.data.errmsg);
    }
    return res.data;
  } else if (status === 500) {
    Message.error('系统升级中');
  }

  // let i = 0,
  //   length = httpStatus.length,
  //   item = null;
  // for (; i < length; i++) {
  //   item = httpStatus[i]
  //   if (res.status === item.code) {
  //     console.log(itme.msg)
  //     return res.data
  //   }
  // }
}

如代码所示 在登录token过期后 点击发起了重复的请求 导致501的时候 返回来多次提示 要怎么解决呢

  • 写回答

1条回答 默认 最新

  • _念_ 2022-02-16 16:19
    关注

    直接取消重复请求

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 8月5日
  • 已采纳回答 7月28日
  • 创建了问题 2月16日

悬赏问题

  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)
  • ¥15 AIC3204的示例代码有吗,想用AIC3204测量血氧,找不到相关的代码。