refactor: 优化超时登录处理逻辑

This commit is contained in:
Charles7c 2023-11-06 22:09:57 +08:00
parent c44162d431
commit d5da1847e3
2 changed files with 11 additions and 7 deletions

View File

@ -22,8 +22,11 @@ const setTimer = (timer: number) => {
};
const clearTimer = () => {
clearInterval(Number(localStorage.getItem(TIMER_KEY)));
localStorage.removeItem(TIMER_KEY);
const timer = localStorage.getItem(TIMER_KEY);
if (timer) {
clearInterval(Number(timer));
localStorage.removeItem(TIMER_KEY);
}
};
export { isLogin, getToken, setToken, clearToken, setTimer, clearTimer };

View File

@ -1,7 +1,7 @@
import axios from 'axios';
import type { AxiosRequestConfig, AxiosResponse } from 'axios';
import { useUserStore } from '@/store';
import { getToken } from '@/utils/auth';
import { getToken, clearTimer } from '@/utils/auth';
import modalErrorWrapper from '@/utils/modal-error-wrapper';
import messageErrorWrapper from '@/utils/message-error-wrapper';
@ -33,7 +33,7 @@ axios.interceptors.request.use(
},
(error) => {
return Promise.reject(error);
}
},
);
// response interceptors
@ -51,8 +51,7 @@ axios.interceptors.response.use(
return res;
}
if ([401].includes(res.code) && response.config.url !== '/auth/user/info') {
const userStore = useUserStore();
userStore.logout();
clearTimer();
modalErrorWrapper({
title: '确认退出',
content: res.msg,
@ -60,6 +59,8 @@ axios.interceptors.response.use(
escToClose: false,
okText: '重新登录',
async onOk() {
const userStore = useUserStore();
userStore.logout();
window.location.reload();
},
});
@ -77,5 +78,5 @@ axios.interceptors.response.use(
duration: 5 * 1000,
});
return Promise.reject(error);
}
},
);