From ece23a42b1ac2fc9b07f8387f5ddc7c0fc1acf18 Mon Sep 17 00:00:00 2001 From: wangxiang <1827945911@qq.com> Date: Sat, 2 Sep 2023 18:45:23 +0800 Subject: [PATCH] chore: fault tolerance --- src/api/platform/core/controller/menu.ts | 2 +- src/api/platform/core/controller/user.ts | 2 +- src/store/modules/user.ts | 18 ++++++++---------- types/axios.d.ts | 6 +++--- 4 files changed, 13 insertions(+), 15 deletions(-) diff --git a/src/api/platform/core/controller/menu.ts b/src/api/platform/core/controller/menu.ts index a8cdf1d..c5d3dac 100644 --- a/src/api/platform/core/controller/menu.ts +++ b/src/api/platform/core/controller/menu.ts @@ -11,4 +11,4 @@ enum Api { } /** 获取用户菜单 */ -export const listMenuRoute = () => defHttp.get({ url: Api.list }); +export const listMenuRoute = () => defHttp.get({ url: Api.list }, { retryRequest: { isOpenRetry: false } }); diff --git a/src/api/platform/core/controller/user.ts b/src/api/platform/core/controller/user.ts index eb1ead4..4e78da6 100644 --- a/src/api/platform/core/controller/user.ts +++ b/src/api/platform/core/controller/user.ts @@ -46,7 +46,7 @@ export const login = (params: LoginParams) => { }; /** 获取当前用户信息 */ -export const getUserInfo = () => defHttp.get({ url: Api.getUserInfo }); +export const getUserInfo = () => defHttp.get({ url: Api.getUserInfo }, { retryRequest: { isOpenRetry: false } }); /** 登出 */ export const logout = () => defHttp.delete({ url: Api.logout }); diff --git a/src/store/modules/user.ts b/src/store/modules/user.ts index 7252be2..7e70b2e 100644 --- a/src/store/modules/user.ts +++ b/src/store/modules/user.ts @@ -28,7 +28,7 @@ import { merge } from 'lodash-es'; import { RequestOptions } from '/#/axios'; interface UserState { - userInfo: Nullable; + userInfo: KiccUser; sessionTimeout?: boolean; lastUpdateTime: number; roleIds: string[]; @@ -95,7 +95,7 @@ export const useUserStore = defineStore({ this.refresh_token = refreshToken; setAuthCache(REFRESH_TOKEN_KEY, refreshToken); }, - setUserInfo(userInfo: Nullable) { + setUserInfo(userInfo: Partial) { this.userInfo = userInfo; this.lastUpdateTime = new Date().getTime(); setAuthCache(USER_INFO_KEY, userInfo); @@ -105,9 +105,7 @@ export const useUserStore = defineStore({ }, resetState(): void { this.setSessionTimeout(false); - this.setUserInfo(null); - this.setAccessToken(''); - this.setRefreshToken(''); + this.setUserInfo({}); this.setRoleIds([]); this.setPermissions([]); }, @@ -127,6 +125,7 @@ export const useUserStore = defineStore({ } const data = await login(loginParams); const { access_token, refresh_token } = data; + this.setUserInfo(data.user_info); this.setAccessToken(access_token); this.setRefreshToken(refresh_token); return this.afterLoginAction(goHome); @@ -173,16 +172,15 @@ export const useUserStore = defineStore({ this.setRoleIds(userInfo.roleIds); this.setPermissions(userInfo.permissions); return userInfo; - } catch (e) { - // 防止 system-biz 微服务挂掉后导致token授权成功重新登陆覆盖授权客户端密钥 - this.resetState(); - throw Error(t('sys.api.errMsg503')); - } + } catch (error) { console.error(error); } + return Promise.resolve({} as KiccUser); }, /** 登出 */ async logout(goLogin = false) { await logout(); this.resetState(); + this.setAccessToken(''); + this.setRefreshToken(''); goLogin && await router.push(PageEnum.BASE_LOGIN); }, /** 退出前确认 */ diff --git a/types/axios.d.ts b/types/axios.d.ts index 91f9c18..70a303c 100644 --- a/types/axios.d.ts +++ b/types/axios.d.ts @@ -40,9 +40,9 @@ export interface RequestOptions { /** 请求重试请求 */ export interface RetryRequest { - isOpenRetry: boolean; - count: number; - waitTime: number; + isOpenRetry?: boolean; + count?: number; + waitTime?: number; } /** 响应信息主体 */