diff --git a/src/layouts/components/LayoutToolbar.vue b/src/layouts/components/LayoutToolbar.vue index c829c3fa..23bb5f81 100644 --- a/src/layouts/components/LayoutToolbar.vue +++ b/src/layouts/components/LayoutToolbar.vue @@ -160,7 +160,9 @@ function logout() { lockScroll: false, }).then(() => { userStore.logout().then(() => { - router.push(`/login?redirect=${route.fullPath}`); + // 若当前已在 404/401 等错误页,退出后不再跳回错误页 + const redirect = ["/404", "/401"].includes(route.path) ? "/" : route.fullPath; + router.push(`/login?redirect=${encodeURIComponent(redirect)}`); }); }); } diff --git a/src/router/guards/permission.ts b/src/router/guards/permission.ts index 5de45807..4685be0b 100644 --- a/src/router/guards/permission.ts +++ b/src/router/guards/permission.ts @@ -56,6 +56,10 @@ export function setupPermissionGuard() { // 路由 404 检查 if (to.matched.length === 0) { + // 从登录页跳转且目标路径无效,回退首页(避免不同用户权限不同导致的 404) + if (_from.path === "/login") { + return { path: "/", replace: true }; + } return "/404"; }