尝试解决登录成功后又报token过期重新登录的问题
Showing
2 changed files
with
16 additions
and
6 deletions
| ... | @@ -56,14 +56,22 @@ onMounted(() => { | ... | @@ -56,14 +56,22 @@ onMounted(() => { |
| 56 | hotkeys('alt+i', () => { | 56 | hotkeys('alt+i', () => { |
| 57 | eventBus.emit('global-system-info-toggle') | 57 | eventBus.emit('global-system-info-toggle') |
| 58 | }) | 58 | }) |
| 59 | 59 | if (!window.location?.href?.includes('?code=')) { | |
| 60 | //判断token的过期时间。 | ||
| 61 | if (!route.fullPath?.includes('?code=')) { | ||
| 62 | userStore.refreshUserToken(); | 60 | userStore.refreshUserToken(); |
| 61 | } else { | ||
| 62 | localStorage.setItem('token', ''); | ||
| 63 | localStorage.setItem('code', ''); | ||
| 64 | localStorage.setItem('state', ''); | ||
| 65 | localStorage.setItem('refresh_token', ""); | ||
| 66 | localStorage.setItem('expiresIn', ''); | ||
| 63 | } | 67 | } |
| 64 | }) | 68 | }) |
| 65 | 69 | ||
| 66 | import.meta.env.VITE_APP_DEBUG_TOOL === 'eruda' && eruda.init() | 70 | import.meta.env.VITE_APP_DEBUG_TOOL === 'eruda' && eruda.init() |
| 71 | |||
| 72 | onUnmounted(() => { | ||
| 73 | window.onresize = null | ||
| 74 | }) | ||
| 67 | </script> | 75 | </script> |
| 68 | 76 | ||
| 69 | <template> | 77 | <template> | ... | ... |
| ... | @@ -82,9 +82,9 @@ const useUserStore = defineStore( | ... | @@ -82,9 +82,9 @@ const useUserStore = defineStore( |
| 82 | }); | 82 | }); |
| 83 | } | 83 | } |
| 84 | 84 | ||
| 85 | function refreshUserToken(isExec = true) { | 85 | async function refreshUserToken(isExec = true) { |
| 86 | let expiresIn = localStorage.getItem('expiresIn'); | 86 | let expiresIn = localStorage.getItem('expiresIn'); |
| 87 | if (!expiresIn) { | 87 | if (!expiresIn || (parseInt(expiresIn) - Date.now()) < 0) { |
| 88 | return; | 88 | return; |
| 89 | } | 89 | } |
| 90 | const process = async () => { | 90 | const process = async () => { |
| ... | @@ -98,7 +98,9 @@ const useUserStore = defineStore( | ... | @@ -98,7 +98,9 @@ const useUserStore = defineStore( |
| 98 | } | 98 | } |
| 99 | } | 99 | } |
| 100 | } | 100 | } |
| 101 | isExec && process(); | 101 | if (isExec) { |
| 102 | await process(); | ||
| 103 | } | ||
| 102 | /** 轮询是否需要刷新token。如果是同步多个调用,则不处理错误的信息。 */ | 104 | /** 轮询是否需要刷新token。如果是同步多个调用,则不处理错误的信息。 */ |
| 103 | setInterval(async () => { | 105 | setInterval(async () => { |
| 104 | process(); | 106 | process(); | ... | ... |
-
Please register or sign in to post a comment