diff --git a/src/router/guard/permissionGuard.ts b/src/router/guard/permissionGuard.ts index 4a4395c7..bbe28ef5 100644 --- a/src/router/guard/permissionGuard.ts +++ b/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; diff --git a/src/store/modules/user.ts b/src/store/modules/user.ts index 42d02fac..67a6611c 100644 --- a/src/store/modules/user.ts +++ b/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) {