Skip to content

Commit

Permalink
fix: infinite redirect in BACK mode
Browse files Browse the repository at this point in the history
修复后端权限模式下的路由无限重定向的问题
  • Loading branch information
mynetfan committed Jul 14, 2021
1 parent 87583c8 commit 4b46a84
Show file tree
Hide file tree
Showing 2 changed files with 56 additions and 15 deletions.
54 changes: 45 additions & 9 deletions mock/sys/menu.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,40 @@ import { createFakeUserList } from './user';
// single
const dashboardRoute = {
path: '/dashboard',
name: 'Welcome',
component: '/dashboard/analysis/index',
name: 'Dashboard',
component: 'LAYOUT',
redirect: '/dashboard/analysis',
meta: {
title: 'routes.dashboard.analysis',
affix: true,
title: 'routes.dashboard.dashboard',
hideChildrenInMenu: true,
icon: 'bx:bx-home',
},
children: [
{
path: 'analysis',
name: 'Analysis',
component: '/dashboard/analysis/index',
meta: {
hideMenu: true,
hideBreadcrumb: true,
title: 'routes.dashboard.analysis',
currentActiveMenu: '/dashboard',
icon: 'bx:bx-home',
},
},
{
path: 'workbench',
name: 'Workbench',
component: '/dashboard/workbench/index',
meta: {
hideMenu: true,
hideBreadcrumb: true,
title: 'routes.dashboard.workbench',
currentActiveMenu: '/dashboard',
icon: 'bx:bx-home',
},
},
],
};

const backRoute = {
Expand Down Expand Up @@ -223,12 +250,21 @@ export default [
return resultError('Invalid user token!');
}
const id = checkUser.userId;
if (!id || id === '1') {
return resultSuccess([dashboardRoute, authRoute, levelRoute, sysRoute, linkRoute]);
}
if (id === '2') {
return resultSuccess([dashboardRoute, authRoute, levelRoute, linkRoute]);
let menu: Object[];
switch (id) {
case '1':
dashboardRoute.redirect = dashboardRoute.path + '/' + dashboardRoute.children[0].path;
menu = [dashboardRoute, authRoute, levelRoute, sysRoute, linkRoute];
break;
case '2':
dashboardRoute.redirect = dashboardRoute.path + '/' + dashboardRoute.children[1].path;
menu = [dashboardRoute, authRoute, levelRoute, linkRoute];
break;
default:
menu = [];
}

return resultSuccess(menu);
},
},
] as MockMethod[];
17 changes: 11 additions & 6 deletions src/router/guard/permissionGuard.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,12 +19,6 @@ export function createPermissionGuard(router: Router) {
const userStore = useUserStoreWithOut();
const permissionStore = usePermissionStoreWithOut();
router.beforeEach(async (to, from, next) => {
// Jump to the 404 page after processing the login
if (from.path === LOGIN_PATH && to.name === PAGE_NOT_FOUND_ROUTE.name) {
next(userStore.getUserInfo.homePath || PageEnum.BASE_HOME);
return;
}

if (
from.path === ROOT_PATH &&
to.path === PageEnum.BASE_HOME &&
Expand Down Expand Up @@ -66,6 +60,17 @@ export function createPermissionGuard(router: Router) {
return;
}

// Jump to the 404 page after processing the login
if (
from.path === LOGIN_PATH &&
to.name === PAGE_NOT_FOUND_ROUTE.name &&
to.fullPath !== (userStore.getUserInfo.homePath || PageEnum.BASE_HOME)
) {
next(userStore.getUserInfo.homePath || PageEnum.BASE_HOME);
console.log({ from, to });
return;
}

if (permissionStore.getIsDynamicAddedRoute) {
next();
return;
Expand Down

0 comments on commit 4b46a84

Please sign in to comment.