Commit 3a5d1a5757c0a2be17e6dd370cbb023ddbb30d5e

Authored by 无木
1 parent 2c867b3d

fix: refresh failed while token invalid

修复当token失效时,刷新页面可能出现异常的问题

fixed: #1101
CHANGELOG.zh_CN.md
... ... @@ -10,6 +10,7 @@
10 10 - **其它**
11 11 - 修复部分封装组件在使用插槽时报错的问题
12 12 - 修复`useECharts`的`theme`参数不起作用的问题
  13 + - 修复`Token`失效时,按 F5 刷新页面可能会出现页面加载异常的问题
13 14  
14 15 ## 2.7.1(2021-08-16)
15 16  
... ...
src/router/guard/permissionGuard.ts
... ... @@ -72,7 +72,12 @@ export function createPermissionGuard(router: Router) {
72 72  
73 73 // get userinfo while last fetch time is empty
74 74 if (userStore.getLastUpdateTime === 0) {
75   - await userStore.getUserInfoAction();
  75 + try {
  76 + await userStore.getUserInfoAction();
  77 + } catch (err) {
  78 + next();
  79 + return;
  80 + }
76 81 }
77 82  
78 83 if (permissionStore.getIsDynamicAddedRoute) {
... ...
src/store/modules/user.ts
... ... @@ -128,10 +128,12 @@ export const useUserStore = defineStore({
128 128 * @description: logout
129 129 */
130 130 async logout(goLogin = false) {
131   - try {
132   - await doLogout();
133   - } catch {
134   - console.log('注销Token失败');
  131 + if (this.token) {
  132 + try {
  133 + await doLogout();
  134 + } catch {
  135 + console.log('注销Token失败');
  136 + }
135 137 }
136 138 this.setToken(undefined);
137 139 this.setSessionTimeout(false);
... ...
src/utils/http/axios/checkStatus.ts
... ... @@ -28,9 +28,9 @@ export function checkStatus(
28 28 // Jump to the login page if not logged in, and carry the path of the current page
29 29 // Return to the current page after successful login. This step needs to be operated on the login page.
30 30 case 401:
31   - errMessage = t('sys.api.errMsg401');
  31 + userStore.setToken(undefined);
  32 + errMessage = msg || t('sys.api.errMsg401');
32 33 if (stp === SessionTimeoutProcessingEnum.PAGE_COVERAGE) {
33   - userStore.setToken(undefined);
34 34 userStore.setSessionTimeout(true);
35 35 } else {
36 36 userStore.logout(true);
... ...