Browse Source

chore: fault tolerance

master
wangxiang 2 years ago
parent
commit
ece23a42b1
No known key found for this signature in database
GPG Key ID: 1BA7946AB6B232E4
  1. 2
      src/api/platform/core/controller/menu.ts
  2. 2
      src/api/platform/core/controller/user.ts
  3. 18
      src/store/modules/user.ts
  4. 6
      types/axios.d.ts

2
src/api/platform/core/controller/menu.ts

@ -11,4 +11,4 @@ enum Api { @@ -11,4 +11,4 @@ enum Api {
}
/** 获取用户菜单 */
export const listMenuRoute = () => defHttp.get<MenuRouteResult>({ url: Api.list });
export const listMenuRoute = () => defHttp.get<MenuRouteResult>({ url: Api.list }, { retryRequest: { isOpenRetry: false } });

2
src/api/platform/core/controller/user.ts

@ -46,7 +46,7 @@ export const login = (params: LoginParams) => { @@ -46,7 +46,7 @@ export const login = (params: LoginParams) => {
};
/** 获取当前用户信息 */
export const getUserInfo = () => defHttp.get<KiccUser>({ url: Api.getUserInfo });
export const getUserInfo = () => defHttp.get<KiccUser>({ url: Api.getUserInfo }, { retryRequest: { isOpenRetry: false } });
/** 登出 */
export const logout = () => defHttp.delete({ url: Api.logout });

18
src/store/modules/user.ts

@ -28,7 +28,7 @@ import { merge } from 'lodash-es'; @@ -28,7 +28,7 @@ import { merge } from 'lodash-es';
import { RequestOptions } from '/#/axios';
interface UserState {
userInfo: Nullable<KiccUser>;
userInfo: KiccUser;
sessionTimeout?: boolean;
lastUpdateTime: number;
roleIds: string[];
@ -95,7 +95,7 @@ export const useUserStore = defineStore({ @@ -95,7 +95,7 @@ export const useUserStore = defineStore({
this.refresh_token = refreshToken;
setAuthCache(REFRESH_TOKEN_KEY, refreshToken);
},
setUserInfo(userInfo: Nullable<KiccUser>) {
setUserInfo(userInfo: Partial<KiccUser>) {
this.userInfo = userInfo;
this.lastUpdateTime = new Date().getTime();
setAuthCache(USER_INFO_KEY, userInfo);
@ -105,9 +105,7 @@ export const useUserStore = defineStore({ @@ -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({ @@ -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({ @@ -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);
},
/** 退出前确认 */

6
types/axios.d.ts vendored

@ -40,9 +40,9 @@ export interface RequestOptions { @@ -40,9 +40,9 @@ export interface RequestOptions {
/** 请求重试请求 */
export interface RetryRequest {
isOpenRetry: boolean;
count: number;
waitTime: number;
isOpenRetry?: boolean;
count?: number;
waitTime?: number;
}
/** 响应信息主体 */

Loading…
Cancel
Save