From 9b290ae3ce6ff6fdd3b487c15456afadfc14b7fb Mon Sep 17 00:00:00 2001 From: preschooler Date: Tue, 29 Oct 2024 12:35:44 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9E=20fix:=E4=BF=AE=E5=A4=8D=E4=BB=8E?= =?UTF-8?q?=E2=80=9C=E5=90=8C=E6=97=B6=E4=BD=BF=E7=94=A8=E4=BA=86=E7=94=A8?= =?UTF-8?q?=E6=88=B7=E4=BF=A1=E6=81=AF=E5=92=8C=E6=9D=83=E9=99=90=E5=88=A4?= =?UTF-8?q?=E6=96=AD=E2=80=9D=E7=9A=84=E9=A1=B5=E9=9D=A2=E9=80=80=E5=87=BA?= =?UTF-8?q?=E7=99=BB=E5=BD=95=E6=97=B6=E5=BC=82=E5=B8=B8=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/directives/permission/hasPermi.ts | 3 ++- src/directives/permission/hasRole.ts | 3 ++- src/store/modules/permission.ts | 5 +++-- src/utils/auth.ts | 3 ++- src/utils/permission.ts | 10 ++++++---- 5 files changed, 15 insertions(+), 9 deletions(-) diff --git a/src/directives/permission/hasPermi.ts b/src/directives/permission/hasPermi.ts index d86d2f54..931f44b3 100644 --- a/src/directives/permission/hasPermi.ts +++ b/src/directives/permission/hasPermi.ts @@ -8,7 +8,8 @@ export function hasPermi(app: App) { const { wsCache } = useCache() const { value } = binding const all_permission = '*:*:*' - const permissions = wsCache.get(CACHE_KEY.USER).permissions + const userInfo = wsCache.get(CACHE_KEY.USER) + const permissions = userInfo?.permissions || [] if (value && value instanceof Array && value.length > 0) { const permissionFlag = value diff --git a/src/directives/permission/hasRole.ts b/src/directives/permission/hasRole.ts index a5de2b8d..a5128112 100644 --- a/src/directives/permission/hasRole.ts +++ b/src/directives/permission/hasRole.ts @@ -8,7 +8,8 @@ export function hasRole(app: App) { const { wsCache } = useCache() const { value } = binding const super_admin = 'super_admin' - const roles = wsCache.get(CACHE_KEY.USER).roles + const userInfo = wsCache.get(CACHE_KEY.USER) + const roles = userInfo?.roles || [] if (value && value instanceof Array && value.length > 0) { const roleFlag = value diff --git a/src/store/modules/permission.ts b/src/store/modules/permission.ts index fc927f42..2ff8111a 100644 --- a/src/store/modules/permission.ts +++ b/src/store/modules/permission.ts @@ -35,8 +35,9 @@ export const usePermissionStore = defineStore('permission', { return new Promise(async (resolve) => { // 获得菜单列表,它在登录的时候,setUserInfoAction 方法中已经进行获取 let res: AppCustomRouteRecordRaw[] = [] - if (wsCache.get(CACHE_KEY.ROLE_ROUTERS)) { - res = wsCache.get(CACHE_KEY.ROLE_ROUTERS) as AppCustomRouteRecordRaw[] + const roleRouters = wsCache.get(CACHE_KEY.ROLE_ROUTERS) + if (roleRouters) { + res = roleRouters as AppCustomRouteRecordRaw[] } const routerMap: AppRouteRecordRaw[] = generateRoute(res) // 动态路由,404一定要放到最后面 diff --git a/src/utils/auth.ts b/src/utils/auth.ts index c68a67a9..d9e85650 100644 --- a/src/utils/auth.ts +++ b/src/utils/auth.ts @@ -10,7 +10,8 @@ const RefreshTokenKey = 'REFRESH_TOKEN' // 获取token export const getAccessToken = () => { // 此处与TokenKey相同,此写法解决初始化时Cookies中不存在TokenKey报错 - return wsCache.get(AccessTokenKey) ? wsCache.get(AccessTokenKey) : wsCache.get('ACCESS_TOKEN') + const accessToken = wsCache.get(AccessTokenKey) + return accessToken ? accessToken : wsCache.get('ACCESS_TOKEN') } // 刷新token diff --git a/src/utils/permission.ts b/src/utils/permission.ts index f6077d1a..3bf67b61 100644 --- a/src/utils/permission.ts +++ b/src/utils/permission.ts @@ -12,8 +12,9 @@ export function checkPermi(value: string[]) { const { wsCache } = useCache() const permissionDatas = value const all_permission = '*:*:*' - const permissions = wsCache.get(CACHE_KEY.USER).permissions - const hasPermission = permissions.some((permission) => { + const userInfo = wsCache.get(CACHE_KEY.USER) + const permissions = userInfo?.permissions || [] + const hasPermission = permissions.some((permission: string) => { return all_permission === permission || permissionDatas.includes(permission) }) return !!hasPermission @@ -33,8 +34,9 @@ export function checkRole(value: string[]) { const { wsCache } = useCache() const permissionRoles = value const super_admin = 'super_admin' - const roles = wsCache.get(CACHE_KEY.USER).roles - const hasRole = roles.some((role) => { + const userInfo = wsCache.get(CACHE_KEY.USER) + const roles = userInfo?.roles || [] + const hasRole = roles.some((role: string) => { return super_admin === role || permissionRoles.includes(role) }) return !!hasRole