axios因token过期导致弹出多条信息提示,简单处理解决!

首先看一下问题,我们在某个页面同时发起三条请求,token过期导致请求失败,返回登录页后一下弹出三个信息提示,体验感不太好

在这里插入图片描述

我们只希望他弹出一条提示,解决办法也很简单,在我们封装请求的js文件中加一个判断即可,先声明一个变量showMsg来控制是否需要弹框,初始化为true,然后在请求判断中如果token失效导致走了401,先判断当前是否可以显示弹框,初始化为true第一次可以显示,然后把showMsg变为false,当地二第三请求走到这里的时候,showMsg为false,就不会再继续弹框了,第一次弹框后记得再加上一个定时器,两三秒后把showMsg重置为true,防止下一次token失效后不弹框

import {
  Message
} from "element-ui";
let showMsg = true;
// 响应处理
let handlerResponse = (resCode, resDataTemp, method, url, data, otherRequestParams) => {
  return new Promise((resolve, reject) => {
    if (resCode === 401 && resDataTemp === '用户无权访问!') {
      Message.error('你无权限访问当前应用!');
      router.push({ path: '/home' });
      return reject('你无权限访问当前应用!');
    }
    if (resCode === 1022 && typeof resDataTemp === 'object' &&
      resDataTemp.message === 'no manager authority') {
      Message.error('你无权限访问当前应用!');
      router.push({ path: '/home' });
      return reject('你无权限访问当前应用!');
    }
    switch (Number(resCode)) {
      case 0:
        resolve(null);
        break;
      case 200:
        resolve(null); 
        break;
      case 401:
        if(showMsg) {
          Message.error('用户尚未登录!');
          showMsg = false
          setTimeout(() => {
            showMsg = true;
          }, 3000);
        }
        router.push({ path: '/login' });
        reject('用户尚未登录');
        break;
      case 1000:
      case 1022:
        Message.error('尚未注册!');
        router.push({ path: '/login' });
        reject('尚未注册');
        break;
      default:
        if (typeof resDataTemp === 'object' && resDataTemp.message) {
          return reject(resDataTemp.message);
        } else {
          return reject('未知错误!code:' + resCode);
        }
    }
  });
}

在这里插入图片描述

ok啦!你学废了吗!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

前端攻城狮路飞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值