fix: 修复重复跳转登录页面问题及优化接口配置

This commit is contained in:
Ray.Hao
2026-04-12 22:48:27 +08:00
parent d704edb80d
commit a86ef31b8e
2 changed files with 21 additions and 9 deletions

View File

@@ -65,16 +65,26 @@ export function hasPerm(value: string | string[], type: "button" | "role" = "but
: value.some((perm) => auths.includes(perm)); : value.some((perm) => auths.includes(perm));
} }
let redirectingToLogin = false;
/** /**
* 重定向到登录页面 * 重定向到登录页面
*/ */
export async function redirectToLogin(message: string = "请重新登录"): Promise<void> { export async function redirectToLogin(
ElNotification({ message: string = "请重新登录",
title: "提示", notify: boolean = true
message, ): Promise<void> {
type: "warning", if (redirectingToLogin) return;
duration: 3000, redirectingToLogin = true;
});
if (notify) {
ElNotification({
title: "提示",
message,
type: "warning",
duration: 3000,
});
}
await useUserStoreHook().resetAllState(); await useUserStoreHook().resetAllState();
@@ -86,5 +96,7 @@ export async function redirectToLogin(message: string = "请重新登录"): Prom
console.error("Redirect to login error:", error); console.error("Redirect to login error:", error);
// 强制跳转,即使路由重定向失败 // 强制跳转,即使路由重定向失败
window.location.href = "/login"; window.location.href = "/login";
} finally {
redirectingToLogin = false;
} }
} }

View File

@@ -90,8 +90,8 @@ http.interceptors.response.use(
// Refresh token 失效:无法续期,跳转登录 // Refresh token 失效:无法续期,跳转登录
if (code === ApiCodeEnum.REFRESH_TOKEN_INVALID) { if (code === ApiCodeEnum.REFRESH_TOKEN_INVALID) {
await redirectToLogin("登录已过期,请重新登录"); await redirectToLogin("登录已过期,请重新登录", false);
return Promise.reject(new Error(msg || "Token Invalid")); return Promise.reject(new Error("Token Invalid"));
} }
// 权限不足:刷新权限快照后提示 // 权限不足:刷新权限快照后提示