diff --git a/playground/src/store/auth.ts b/playground/src/store/auth.ts index 9d461d153..1fec5c049 100644 --- a/playground/src/store/auth.ts +++ b/playground/src/store/auth.ts @@ -78,31 +78,32 @@ export const useAuthStore = defineStore('auth', () => { }; } - let isLoggingOut = false; // 正在 logout 标识, 防止 /logout 死循环. + const isLoggingOut = ref(false); // 正在 logout 标识, 防止 /logout 死循环. async function logout(redirect: boolean = true) { - if (isLoggingOut) return; - isLoggingOut = true; + if (isLoggingOut.value) return; // 正在登出中, 说明已进入循环, 直接返回. + isLoggingOut.value = true; // 设置 标识 + try { await logoutApi(); + + resetAllStores(); + accessStore.setLoginExpired(false); + + // 回登录页带上当前路由地址 + await router.replace({ + path: LOGIN_PATH, + query: redirect + ? { + redirect: encodeURIComponent(router.currentRoute.value.fullPath), + } + : {}, + }); } catch { // 不做任何处理 } finally { - isLoggingOut = false; + isLoggingOut.value = false; // 重置 标识 } - - resetAllStores(); - accessStore.setLoginExpired(false); - - // 回登录页带上当前路由地址 - await router.replace({ - path: LOGIN_PATH, - query: redirect - ? { - redirect: encodeURIComponent(router.currentRoute.value.fullPath), - } - : {}, - }); } async function fetchUserInfo() {