Browse Source

feat: always refresh userinfo when page reload

每次刷新整个页面时都从接口更新用户信息
pull/1082/head
无木 5 years ago
parent
commit
cc46935a82
  1. 7
      src/router/guard/permissionGuard.ts
  2. 7
      src/store/modules/user.ts

7
src/router/guard/permissionGuard.ts

@ -67,10 +67,14 @@ export function createPermissionGuard(router: Router) {
to.fullPath !== (userStore.getUserInfo.homePath || PageEnum.BASE_HOME)
) {
next(userStore.getUserInfo.homePath || PageEnum.BASE_HOME);
console.log({ from, to });
return;
}
// get userinfo while last fetch time is empty
if (userStore.getLastUpdateTime === 0) {
await userStore.getUserInfoAction();
}
if (permissionStore.getIsDynamicAddedRoute) {
next();
return;
@ -88,7 +92,6 @@ export function createPermissionGuard(router: Router) {
if (to.name === PAGE_NOT_FOUND_ROUTE.name) {
// 动态添加路由后,此处应当重定向到fullPath,否则会加载404页面内容
// fix: 添加query以免丢失
next({ path: to.fullPath, replace: true, query: to.query });
} else {
const redirectPath = (from.query.redirect || to.path) as string;

7
src/store/modules/user.ts

@ -20,6 +20,7 @@ interface UserState {
token?: string;
roleList: RoleEnum[];
sessionTimeout?: boolean;
lastUpdateTime: number;
}
export const useUserStore = defineStore({
@ -33,6 +34,8 @@ export const useUserStore = defineStore({
roleList: [],
// Whether the login expired
sessionTimeout: false,
// Last fetch time
lastUpdateTime: 0,
}),
getters: {
getUserInfo(): UserInfo {
@ -47,6 +50,9 @@ export const useUserStore = defineStore({
getSessionTimeout(): boolean {
return !!this.sessionTimeout;
},
getLastUpdateTime(): number {
return this.lastUpdateTime;
},
},
actions: {
setToken(info: string | undefined) {
@ -59,6 +65,7 @@ export const useUserStore = defineStore({
},
setUserInfo(info: UserInfo) {
this.userInfo = info;
this.lastUpdateTime = new Date().getTime();
setAuthCache(USER_INFO_KEY, info);
},
setSessionTimeout(flag: boolean) {

Loading…
Cancel
Save