提交 cc46935a 编写于 作者: 无木

feat: always refresh userinfo when page reload

每次刷新整个页面时都从接口更新用户信息
上级 53e79a2d
......@@ -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;
......
......@@ -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) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册