From 5e90e5ca06056c8ec4285ddd61b5cadd4bd09c50 Mon Sep 17 00:00:00 2001 From: ray <1490493387@qq.com> Date: Wed, 13 Nov 2024 13:36:29 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20:bug:=20=E6=B3=A8=E9=94=80=E6=B8=85?= =?UTF-8?q?=E9=99=A4=E7=94=A8=E6=88=B7=E6=95=B0=E6=8D=AE=E6=96=B9=E6=B3=95?= =?UTF-8?q?=E5=90=8D=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/plugins/permission.ts | 31 +++++++++---------------------- 1 file changed, 9 insertions(+), 22 deletions(-) diff --git a/src/plugins/permission.ts b/src/plugins/permission.ts index f93db995..2922cb09 100644 --- a/src/plugins/permission.ts +++ b/src/plugins/permission.ts @@ -1,8 +1,4 @@ -import type { - NavigationGuardNext, - RouteLocationNormalized, - RouteRecordRaw, -} from "vue-router"; +import type { NavigationGuardNext, RouteLocationNormalized, RouteRecordRaw } from "vue-router"; import NProgress from "@/utils/nprogress"; import { getToken } from "@/utils/auth"; import router from "@/router"; @@ -22,15 +18,14 @@ export function setupPermission() { next({ path: "/" }); } else { const permissionStore = usePermissionStore(); - // 判断路由是否加载过 + // 判断路由是否加载完成 if (permissionStore.isRoutesLoaded) { if (to.matched.length === 0) { // 路由未匹配,跳转到404 next("/404"); } else { // 动态设置页面标题 - const title = - (to.params.title as string) || (to.query.title as string); + const title = (to.params.title as string) || (to.query.title as string); if (title) { to.meta.title = title; } @@ -40,14 +35,12 @@ export function setupPermission() { try { // 生成动态路由 const dynamicRoutes = await permissionStore.generateRoutes(); - dynamicRoutes.forEach((route: RouteRecordRaw) => - router.addRoute(route) - ); - next({ ...to, replace: true }); // 添加动态路由后重新导航 + dynamicRoutes.forEach((route: RouteRecordRaw) => router.addRoute(route)); + next({ ...to, replace: true }); } catch (error) { console.error(error); // 路由加载失败,重置 token 并重定向到登录页 - await useUserStore().clearUserSession(); + await useUserStore().clearUserData(); redirectToLogin(to, next); NProgress.done(); } @@ -60,7 +53,7 @@ export function setupPermission() { } else { // 不在白名单,重定向到登录页 redirectToLogin(to, next); - NProgress.done(); // 关闭进度条 + NProgress.done(); } } }); @@ -72,10 +65,7 @@ export function setupPermission() { } /** 重定向到登录页 */ -function redirectToLogin( - to: RouteLocationNormalized, - next: NavigationGuardNext -) { +function redirectToLogin(to: RouteLocationNormalized, next: NavigationGuardNext) { const params = new URLSearchParams(to.query as Record); const queryString = params.toString(); const redirect = queryString ? `${to.path}?${queryString}` : to.path; @@ -83,10 +73,7 @@ function redirectToLogin( } /** 判断是否有权限 */ -export function hasAuth( - value: string | string[], - type: "button" | "role" = "button" -) { +export function hasAuth(value: string | string[], type: "button" | "role" = "button") { const { roles, perms } = useUserStore().userInfo; // 超级管理员 拥有所有权限