Kaynağa Gözat

调整关闭浏览器需要重新登陆

Zimo 6 gün önce
ebeveyn
işleme
e6c04f9fad
2 değiştirilmiş dosya ile 19 ekleme ve 14 silme
  1. 4 0
      src/permission.ts
  2. 15 14
      src/utils/auth.ts

+ 4 - 0
src/permission.ts

@@ -5,6 +5,7 @@ import { getAccessToken } from '@/utils/auth'
 import { useTitle } from '@/hooks/web/useTitle'
 import { useNProgress } from '@/hooks/web/useNProgress'
 import { usePageLoading } from '@/hooks/web/usePageLoading'
+import { deleteUserCache } from '@/hooks/web/useCache'
 import { useDictStoreWithOut } from '@/store/modules/dict'
 import { useUserStoreWithOut } from '@/store/modules/user'
 import { usePermissionStoreWithOut } from '@/store/modules/permission'
@@ -149,6 +150,9 @@ router.beforeEach(async (to, from, next) => {
       }
     }
   } else {
+    authUtil.removeToken()
+    deleteUserCache()
+    useUserStoreWithOut().resetState()
     if (to.query.username) {
       await getTenantId()
       const res = await LoginApi.portalLogin({

+ 15 - 14
src/utils/auth.ts

@@ -2,33 +2,34 @@ import { useCache, CACHE_KEY } from '@/hooks/web/useCache'
 import { TokenType } from '@/api/login/types'
 import { decrypt, encrypt } from '@/utils/jsencrypt'
 
-const { wsCache } = useCache()
+const { wsCache: localCache } = useCache()
+const { wsCache: sessionCache } = useCache('sessionStorage')
 
 const AccessTokenKey = 'ACCESS_TOKEN'
 const RefreshTokenKey = 'REFRESH_TOKEN'
 
 // 获取token
 export const getAccessToken = () => {
-  // 此处与TokenKey相同,此写法解决初始化时Cookies中不存在TokenKey报错
-  const accessToken = wsCache.get(AccessTokenKey)
-  return accessToken ? accessToken : wsCache.get('ACCESS_TOKEN')
+  return sessionCache.get(AccessTokenKey)
 }
 
 // 刷新token
 export const getRefreshToken = () => {
-  return wsCache.get(RefreshTokenKey)
+  return sessionCache.get(RefreshTokenKey)
 }
 
 // 设置token
 export const setToken = (token: TokenType) => {
-  wsCache.set(RefreshTokenKey, token.refreshToken)
-  wsCache.set(AccessTokenKey, token.accessToken)
+  sessionCache.set(RefreshTokenKey, token.refreshToken)
+  sessionCache.set(AccessTokenKey, token.accessToken)
 }
 
 // 删除token
 export const removeToken = () => {
-  wsCache.delete(AccessTokenKey)
-  wsCache.delete(RefreshTokenKey)
+  sessionCache.delete(AccessTokenKey)
+  sessionCache.delete(RefreshTokenKey)
+  localCache.delete(AccessTokenKey)
+  localCache.delete(RefreshTokenKey)
 }
 
 /** 格式化token(jwt格式) */
@@ -45,7 +46,7 @@ export type LoginFormType = {
 }
 
 export const getLoginForm = () => {
-  const loginForm: LoginFormType = wsCache.get(CACHE_KEY.LoginForm)
+  const loginForm: LoginFormType = localCache.get(CACHE_KEY.LoginForm)
   if (loginForm) {
     loginForm.password = decrypt(loginForm.password) as string
   }
@@ -54,19 +55,19 @@ export const getLoginForm = () => {
 
 export const setLoginForm = (loginForm: LoginFormType) => {
   loginForm.password = encrypt(loginForm.password) as string
-  wsCache.set(CACHE_KEY.LoginForm, loginForm, { exp: 30 * 24 * 60 * 60 })
+  localCache.set(CACHE_KEY.LoginForm, loginForm, { exp: 30 * 24 * 60 * 60 })
 }
 
 export const removeLoginForm = () => {
-  wsCache.delete(CACHE_KEY.LoginForm)
+  localCache.delete(CACHE_KEY.LoginForm)
 }
 
 // ========== 租户相关 ==========
 
 export const getTenantId = () => {
-  return wsCache.get(CACHE_KEY.TenantId)
+  return localCache.get(CACHE_KEY.TenantId)
 }
 
 export const setTenantId = (username: string) => {
-  wsCache.set(CACHE_KEY.TenantId, username)
+  localCache.set(CACHE_KEY.TenantId, username)
 }