fix: 修复退出登录后定时器依然执行的问题
This commit is contained in:
parent
dd47265e97
commit
bc4d7e0dc1
continew-admin-ui/src
@ -190,7 +190,7 @@
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import { computed, ref, inject, watchEffect } from 'vue';
|
||||
import { computed, ref, inject } from 'vue';
|
||||
import { useDark, useToggle, useFullscreen } from '@vueuse/core';
|
||||
import { useAppStore, useUserStore } from '@/store';
|
||||
import { countUnread } from '@/api/system/message';
|
||||
@ -200,6 +200,7 @@
|
||||
import Menu from '@/components/menu/index.vue';
|
||||
import getAvatar from '@/utils/avatar';
|
||||
import getFile from '@/utils/file';
|
||||
import { setTimer } from '@/utils/auth';
|
||||
import MessageBox from '../message-box/index.vue';
|
||||
|
||||
const appStore = useAppStore();
|
||||
@ -234,7 +235,7 @@
|
||||
unReadMessageCount.value = res.data.total;
|
||||
}
|
||||
getUnreadCount();
|
||||
setInterval(getUnreadCount, 10000);
|
||||
setTimer(setInterval(getUnreadCount, 10000));
|
||||
|
||||
const handleToggleTheme = () => {
|
||||
toggleTheme();
|
||||
|
@ -11,7 +11,7 @@ import {
|
||||
getUserInfo,
|
||||
} from '@/api/auth';
|
||||
import { getImageCaptcha as getCaptcha } from '@/api/common/captcha';
|
||||
import { setToken, clearToken } from '@/utils/auth';
|
||||
import { setToken, clearToken, clearTimer } from '@/utils/auth';
|
||||
import { removeRouteListener } from '@/utils/route-listener';
|
||||
import { UserState } from './types';
|
||||
import useAppStore from '../app';
|
||||
@ -102,6 +102,7 @@ const useUserStore = defineStore('user', {
|
||||
const appStore = useAppStore();
|
||||
this.resetInfo();
|
||||
clearToken();
|
||||
clearTimer();
|
||||
removeRouteListener();
|
||||
appStore.clearServerMenu();
|
||||
},
|
||||
|
@ -1,3 +1,4 @@
|
||||
const TIMER_KEY = 'timer';
|
||||
const TOKEN_KEY = 'token';
|
||||
|
||||
const isLogin = () => {
|
||||
@ -16,4 +17,13 @@ const clearToken = () => {
|
||||
localStorage.removeItem(TOKEN_KEY);
|
||||
};
|
||||
|
||||
export { isLogin, getToken, setToken, clearToken };
|
||||
const setTimer = (timer: number) => {
|
||||
localStorage.setItem(TIMER_KEY, String(timer));
|
||||
};
|
||||
|
||||
const clearTimer = () => {
|
||||
clearInterval(Number(localStorage.getItem(TIMER_KEY)));
|
||||
localStorage.removeItem(TIMER_KEY);
|
||||
};
|
||||
|
||||
export { isLogin, getToken, setToken, clearToken, setTimer, clearTimer };
|
||||
|
@ -51,6 +51,8 @@ axios.interceptors.response.use(
|
||||
return res;
|
||||
}
|
||||
if ([401].includes(res.code) && response.config.url !== '/auth/user/info') {
|
||||
const userStore = useUserStore();
|
||||
userStore.logout();
|
||||
modalErrorWrapper({
|
||||
title: '确认退出',
|
||||
content: res.msg,
|
||||
@ -58,8 +60,6 @@ axios.interceptors.response.use(
|
||||
escToClose: false,
|
||||
okText: '重新登录',
|
||||
async onOk() {
|
||||
const userStore = useUserStore();
|
||||
await userStore.logout();
|
||||
window.location.reload();
|
||||
},
|
||||
});
|
||||
|
Loading…
Reference in New Issue
Block a user