From ab306c4e2ce331757765309f8ce8807c2dbc8e6d Mon Sep 17 00:00:00 2001 From: pany <939630029@qq.com> Date: Tue, 3 Dec 2024 19:43:14 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E7=A7=BB=E9=99=A4=E8=B7=AF=E7=94=B1?= =?UTF-8?q?=E5=AE=88=E5=8D=AB=E4=B8=AD=E7=9A=84=20next=20=E5=8F=82?= =?UTF-8?q?=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/router/guard.ts | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/router/guard.ts b/src/router/guard.ts index 512da5aa..e2de48fd 100644 --- a/src/router/guard.ts +++ b/src/router/guard.ts @@ -13,21 +13,21 @@ const { setTitle } = useTitle() export function registerNavigationGuard(router: Router) { // 全局前置守卫 - router.beforeEach(async (to, _from, next) => { + router.beforeEach(async (to, _from) => { NProgress.start() const userStore = useUserStore() const permissionStore = usePermissionStore() // 如果没有登陆 if (!getToken()) { // 如果在免登录的白名单中,则直接进入 - if (isWhiteList(to)) return next() + if (isWhiteList(to)) return true // 其他没有访问权限的页面将被重定向到登录页面 - return next("/login") + return "/login" } // 如果已经登录,并准备进入 Login 页面,则重定向到主页 - if (to.path === "/login") return next({ path: "/" }) + if (to.path === "/login") return "/" // 如果用户已经获得其权限角色 - if (userStore.roles.length !== 0) return next() + if (userStore.roles.length !== 0) return true // 否则要重新获取权限角色 try { await userStore.getInfo() @@ -38,12 +38,12 @@ export function registerNavigationGuard(router: Router) { // 将 "有访问权限的动态路由" 添加到 Router 中 permissionStore.addRoutes.forEach(route => router.addRoute(route)) // 设置 replace: true, 因此导航将不会留下历史记录 - next({ ...to, replace: true }) + return { ...to, replace: true } } catch (error) { // 过程中发生任何错误,都直接重置 Token,并重定向到登录页面 userStore.resetToken() ElMessage.error((error as Error).message || "路由守卫发生错误") - next("/login") + return "/login" } })