Browse Source

refactor: 1. 用 ref 包装 flag; 2. 在最后 清理 flag;

pull/7093/head
eric 4 weeks ago
parent
commit
13c8318adc
  1. 35
      playground/src/store/auth.ts

35
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() {

Loading…
Cancel
Save