Commit f56450c6b7b1c367b3a4e7a1dd6f69a832f2de97

Authored by YunaiV
1 parent f7268e7c

v3.8.1 修复登录失效后多次请求提示多次弹窗问题

yudao-ui-admin/src/utils/request.js
... ... @@ -5,6 +5,9 @@ import { getToken } from '@/utils/auth'
5 5 import errorCode from '@/utils/errorCode'
6 6 import Cookies from "js-cookie";
7 7  
  8 +// 是否显示重新登录
  9 +let isReloginShow;
  10 +
8 11 axios.defaults.headers['Content-Type'] = 'application/json;charset=utf-8'
9 12 // 创建axios实例
10 13 const service = axios.create({
... ... @@ -60,19 +63,25 @@ service.interceptors.response.use(res => {
60 63 // 获取错误信息
61 64 const msg = errorCode[code] || res.data.msg || errorCode['default']
62 65 if (code === 401) {
63   - MessageBox.confirm('登录状态已过期,您可以继续留在该页面,或者重新登录', '系统提示', {
64   - confirmButtonText: '重新登录',
65   - cancelButtonText: '取消',
66   - type: 'warning'
67   - }
68   - ).then(() => {
69   - store.dispatch('LogOut').then(() => {
70   - // if (location.pathname !== '/login') { // 避免重复跳转
71   - //
72   - // }
73   - location.href = '/index';
74   - })
75   - }).catch(() => {});
  66 + if (!isReloginShow) {
  67 + isReloginShow = true;
  68 + MessageBox.confirm('登录状态已过期,您可以继续留在该页面,或者重新登录', '系统提示', {
  69 + confirmButtonText: '重新登录',
  70 + cancelButtonText: '取消',
  71 + type: 'warning'
  72 + }
  73 + ).then(() => {
  74 + isReloginShow = false;
  75 + store.dispatch('LogOut').then(() => {
  76 + // 如果是登录页面不需要重新加载
  77 + if (window.location.hash.indexOf("#/login") !== 0) {
  78 + location.href = '/index';
  79 + }
  80 + })
  81 + }).catch(() => {
  82 + isReloginShow = false;
  83 + });
  84 + }
76 85 return Promise.reject('无效的会话,或者会话已过期,请重新登录。')
77 86 } else if (code === 500) {
78 87 Message({
... ...