diff --git a/server/MiAssessment/src/MiAssessment.Admin/admin-web/src/router/index.ts b/server/MiAssessment/src/MiAssessment.Admin/admin-web/src/router/index.ts index ab7f8ec..9d8e203 100644 --- a/server/MiAssessment/src/MiAssessment.Admin/admin-web/src/router/index.ts +++ b/server/MiAssessment/src/MiAssessment.Admin/admin-web/src/router/index.ts @@ -107,6 +107,26 @@ router.beforeEach(async (to, _from, next) => { } // 生成动态路由 const accessRoutes = await permissionStore.generateRoutes() + + // 如果用户没有任何菜单权限,提示并退出登录 + if (!accessRoutes || accessRoutes.length === 0) { + console.warn('当前用户没有任何菜单权限') + dynamicRoutesLoaded = false + const { ElMessageBox } = await import('element-plus') + const roles = userStore.userInfo?.roles?.join('、') || '无' + await ElMessageBox.alert( + `当前账号未分配菜单权限,无法进入系统。

` + + `账号:${userStore.userInfo?.username}
` + + `角色:${roles}

` + + `请联系超级管理员,在「系统管理 - 角色管理」中为对应角色分配菜单,或在「管理员管理」中为该账号分配专属菜单。`, + '无菜单权限', + { dangerouslyUseHTMLString: true, confirmButtonText: '返回登录', type: 'warning' } + ).catch(() => {}) + userStore.resetState() + next(`/login?redirect=${to.path}`) + return + } + // 添加动态路由 accessRoutes.forEach(route => { router.addRoute(route) diff --git a/server/MiAssessment/src/MiAssessment.Admin/admin-web/src/views/error/404.vue b/server/MiAssessment/src/MiAssessment.Admin/admin-web/src/views/error/404.vue index cd4fdc9..f98b926 100644 --- a/server/MiAssessment/src/MiAssessment.Admin/admin-web/src/views/error/404.vue +++ b/server/MiAssessment/src/MiAssessment.Admin/admin-web/src/views/error/404.vue @@ -3,19 +3,137 @@

404

抱歉,您访问的页面不存在

- 返回首页 + + +
+ + + + +
+ +
+ 返回首页 + 退出登录 +