From 0d862dfe1df5583b1b8499e3ce073753773c5c6b Mon Sep 17 00:00:00 2001 From: Zhou Weidong <502333560@qq.com> Date: Mon, 9 Nov 2026 10:27:48 +0800 Subject: [PATCH] =?UTF-8?q?fix(router):=20=E6=8C=89=E8=B4=A6=E5=8F=B7?= =?UTF-8?q?=E8=8F=9C=E5=8D=95=E8=90=BD=E5=9C=B0=E9=81=BF=E5=85=8D=E5=88=9B?= =?UTF-8?q?=E4=BD=9C=E8=80=85=E8=BF=9B=E5=85=A5=20404?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/permission.ts | 9 ++++++++- src/router/index.ts | 3 ++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/permission.ts b/src/permission.ts index 557b305..cc04e51 100644 --- a/src/permission.ts +++ b/src/permission.ts @@ -25,13 +25,20 @@ router.beforeEach(async (to, from, next) => { const userStore = useUserStoreWithOut() if (userStore.getUserInfo) { if (to.path === '/login') { - next({ path: '/' }) + // 已登录再访问登录页:按当前账号的菜单落地,不能回 '/'(静态路由会 redirect 到 /dashboard/index, + // 创作者没有该路由,直接掉 404) + next({ path: landingPath(), replace: true }) } else { if (permissionStore.getIsAddRouters) { // 已加过路由:只有还是同一个账号才能直接放行。 // 换账号时(例如超管退出后创作者登录)必须重建,否则侧边栏/路由会残留上一个账号的 const username = userStore.getUserInfo?.username || '' if (permissionStore.getRoutersOwner === username) { + // 访问根路径时同样按账号菜单落地,避免走静态 redirect 掉进 /dashboard/index + if (to.path === '/') { + next({ path: landingPath(), replace: true }) + return + } next() return } diff --git a/src/router/index.ts b/src/router/index.ts index a6f450a..48b1bb0 100644 --- a/src/router/index.ts +++ b/src/router/index.ts @@ -8,9 +8,10 @@ import { AppIcons } from '@/constants/icons' export const constantRouterMap: AppRouteRecordRaw[] = [ { + // 不写死 redirect:vue-router 会在守卫之前就把 '/' 解析成 redirect 目标, + // 创作者没有 /dashboard/index 路由会直接 404。落地页交给 permission.ts 按账号菜单决定。 path: '/', component: Layout, - redirect: '/dashboard/index', name: 'Root', meta: { hidden: true