diff --git a/src/config/white-list.ts b/src/config/white-list.ts index 1a09b6c..df47b23 100644 --- a/src/config/white-list.ts +++ b/src/config/white-list.ts @@ -1,4 +1,15 @@ -/** 免登录白名单 */ -const whiteList = ["/login"] +import { type RouteLocationNormalized } from "vue-router" -export { whiteList } +/** 免登录白名单(匹配路由 path) */ +const whiteListByPath: string[] = ["/login"] + +/** 免登录白名单(匹配路由 name) */ +const whiteListByName: string[] = [] + +/** 判断是否在白名单 */ +const isWhiteList = (to: RouteLocationNormalized) => { + // path 和 name 任意一个匹配上即可 + return whiteListByPath.indexOf(to.path) !== -1 || whiteListByName.indexOf(to.name as any) !== -1 +} + +export default isWhiteList diff --git a/src/router/permission.ts b/src/router/permission.ts index 290f9a5..7f87227 100644 --- a/src/router/permission.ts +++ b/src/router/permission.ts @@ -2,9 +2,9 @@ import router from "@/router" import { useUserStoreHook } from "@/store/modules/user" import { usePermissionStoreHook } from "@/store/modules/permission" import { ElMessage } from "element-plus" -import { whiteList } from "@/config/white-list" import { getToken } from "@/utils/cache/cookies" import asyncRouteSettings from "@/config/async-route" +import isWhiteList from "@/config/white-list" import NProgress from "nprogress" import "nprogress/nprogress.css" @@ -55,7 +55,7 @@ router.beforeEach(async (to, _from, next) => { } } else { // 如果没有 Token - if (whiteList.indexOf(to.path) !== -1) { + if (isWhiteList(to)) { // 如果在免登录的白名单中,则直接进入 next() } else {