Commit 4b46a84c2b85e8da799426c54b3381ae93183db4
1 parent
87583c8b
fix: infinite redirect in `BACK` mode
修复后端权限模式下的路由无限重定向的问题
Showing
2 changed files
with
56 additions
and
15 deletions
mock/sys/menu.ts
@@ -5,13 +5,40 @@ import { createFakeUserList } from './user'; | @@ -5,13 +5,40 @@ import { createFakeUserList } from './user'; | ||
5 | // single | 5 | // single |
6 | const dashboardRoute = { | 6 | const dashboardRoute = { |
7 | path: '/dashboard', | 7 | path: '/dashboard', |
8 | - name: 'Welcome', | ||
9 | - component: '/dashboard/analysis/index', | 8 | + name: 'Dashboard', |
9 | + component: 'LAYOUT', | ||
10 | + redirect: '/dashboard/analysis', | ||
10 | meta: { | 11 | meta: { |
11 | - title: 'routes.dashboard.analysis', | ||
12 | - affix: true, | 12 | + title: 'routes.dashboard.dashboard', |
13 | + hideChildrenInMenu: true, | ||
13 | icon: 'bx:bx-home', | 14 | icon: 'bx:bx-home', |
14 | }, | 15 | }, |
16 | + children: [ | ||
17 | + { | ||
18 | + path: 'analysis', | ||
19 | + name: 'Analysis', | ||
20 | + component: '/dashboard/analysis/index', | ||
21 | + meta: { | ||
22 | + hideMenu: true, | ||
23 | + hideBreadcrumb: true, | ||
24 | + title: 'routes.dashboard.analysis', | ||
25 | + currentActiveMenu: '/dashboard', | ||
26 | + icon: 'bx:bx-home', | ||
27 | + }, | ||
28 | + }, | ||
29 | + { | ||
30 | + path: 'workbench', | ||
31 | + name: 'Workbench', | ||
32 | + component: '/dashboard/workbench/index', | ||
33 | + meta: { | ||
34 | + hideMenu: true, | ||
35 | + hideBreadcrumb: true, | ||
36 | + title: 'routes.dashboard.workbench', | ||
37 | + currentActiveMenu: '/dashboard', | ||
38 | + icon: 'bx:bx-home', | ||
39 | + }, | ||
40 | + }, | ||
41 | + ], | ||
15 | }; | 42 | }; |
16 | 43 | ||
17 | const backRoute = { | 44 | const backRoute = { |
@@ -223,12 +250,21 @@ export default [ | @@ -223,12 +250,21 @@ export default [ | ||
223 | return resultError('Invalid user token!'); | 250 | return resultError('Invalid user token!'); |
224 | } | 251 | } |
225 | const id = checkUser.userId; | 252 | const id = checkUser.userId; |
226 | - if (!id || id === '1') { | ||
227 | - return resultSuccess([dashboardRoute, authRoute, levelRoute, sysRoute, linkRoute]); | ||
228 | - } | ||
229 | - if (id === '2') { | ||
230 | - return resultSuccess([dashboardRoute, authRoute, levelRoute, linkRoute]); | 253 | + let menu: Object[]; |
254 | + switch (id) { | ||
255 | + case '1': | ||
256 | + dashboardRoute.redirect = dashboardRoute.path + '/' + dashboardRoute.children[0].path; | ||
257 | + menu = [dashboardRoute, authRoute, levelRoute, sysRoute, linkRoute]; | ||
258 | + break; | ||
259 | + case '2': | ||
260 | + dashboardRoute.redirect = dashboardRoute.path + '/' + dashboardRoute.children[1].path; | ||
261 | + menu = [dashboardRoute, authRoute, levelRoute, linkRoute]; | ||
262 | + break; | ||
263 | + default: | ||
264 | + menu = []; | ||
231 | } | 265 | } |
266 | + | ||
267 | + return resultSuccess(menu); | ||
232 | }, | 268 | }, |
233 | }, | 269 | }, |
234 | ] as MockMethod[]; | 270 | ] as MockMethod[]; |
src/router/guard/permissionGuard.ts
@@ -19,12 +19,6 @@ export function createPermissionGuard(router: Router) { | @@ -19,12 +19,6 @@ export function createPermissionGuard(router: Router) { | ||
19 | const userStore = useUserStoreWithOut(); | 19 | const userStore = useUserStoreWithOut(); |
20 | const permissionStore = usePermissionStoreWithOut(); | 20 | const permissionStore = usePermissionStoreWithOut(); |
21 | router.beforeEach(async (to, from, next) => { | 21 | router.beforeEach(async (to, from, next) => { |
22 | - // Jump to the 404 page after processing the login | ||
23 | - if (from.path === LOGIN_PATH && to.name === PAGE_NOT_FOUND_ROUTE.name) { | ||
24 | - next(userStore.getUserInfo.homePath || PageEnum.BASE_HOME); | ||
25 | - return; | ||
26 | - } | ||
27 | - | ||
28 | if ( | 22 | if ( |
29 | from.path === ROOT_PATH && | 23 | from.path === ROOT_PATH && |
30 | to.path === PageEnum.BASE_HOME && | 24 | to.path === PageEnum.BASE_HOME && |
@@ -66,6 +60,17 @@ export function createPermissionGuard(router: Router) { | @@ -66,6 +60,17 @@ export function createPermissionGuard(router: Router) { | ||
66 | return; | 60 | return; |
67 | } | 61 | } |
68 | 62 | ||
63 | + // Jump to the 404 page after processing the login | ||
64 | + if ( | ||
65 | + from.path === LOGIN_PATH && | ||
66 | + to.name === PAGE_NOT_FOUND_ROUTE.name && | ||
67 | + to.fullPath !== (userStore.getUserInfo.homePath || PageEnum.BASE_HOME) | ||
68 | + ) { | ||
69 | + next(userStore.getUserInfo.homePath || PageEnum.BASE_HOME); | ||
70 | + console.log({ from, to }); | ||
71 | + return; | ||
72 | + } | ||
73 | + | ||
69 | if (permissionStore.getIsDynamicAddedRoute) { | 74 | if (permissionStore.getIsDynamicAddedRoute) { |
70 | next(); | 75 | next(); |
71 | return; | 76 | return; |