提交 cc46935a 作者: 无木

feat: always refresh userinfo when page reload

每次刷新整个页面时都从接口更新用户信息
上级 53e79a2d
...@@ -67,10 +67,14 @@ export function createPermissionGuard(router: Router) { ...@@ -67,10 +67,14 @@ export function createPermissionGuard(router: Router) {
to.fullPath !== (userStore.getUserInfo.homePath || PageEnum.BASE_HOME) to.fullPath !== (userStore.getUserInfo.homePath || PageEnum.BASE_HOME)
) { ) {
next(userStore.getUserInfo.homePath || PageEnum.BASE_HOME); next(userStore.getUserInfo.homePath || PageEnum.BASE_HOME);
console.log({ from, to });
return; return;
} }
// get userinfo while last fetch time is empty
if (userStore.getLastUpdateTime === 0) {
await userStore.getUserInfoAction();
}
if (permissionStore.getIsDynamicAddedRoute) { if (permissionStore.getIsDynamicAddedRoute) {
next(); next();
return; return;
...@@ -88,7 +92,6 @@ export function createPermissionGuard(router: Router) { ...@@ -88,7 +92,6 @@ export function createPermissionGuard(router: Router) {
if (to.name === PAGE_NOT_FOUND_ROUTE.name) { if (to.name === PAGE_NOT_FOUND_ROUTE.name) {
// 动态添加路由后,此处应当重定向到fullPath,否则会加载404页面内容 // 动态添加路由后,此处应当重定向到fullPath,否则会加载404页面内容
// fix: 添加query以免丢失
next({ path: to.fullPath, replace: true, query: to.query }); next({ path: to.fullPath, replace: true, query: to.query });
} else { } else {
const redirectPath = (from.query.redirect || to.path) as string; const redirectPath = (from.query.redirect || to.path) as string;
......
...@@ -20,6 +20,7 @@ interface UserState { ...@@ -20,6 +20,7 @@ interface UserState {
token?: string; token?: string;
roleList: RoleEnum[]; roleList: RoleEnum[];
sessionTimeout?: boolean; sessionTimeout?: boolean;
lastUpdateTime: number;
} }
export const useUserStore = defineStore({ export const useUserStore = defineStore({
...@@ -33,6 +34,8 @@ export const useUserStore = defineStore({ ...@@ -33,6 +34,8 @@ export const useUserStore = defineStore({
roleList: [], roleList: [],
// Whether the login expired // Whether the login expired
sessionTimeout: false, sessionTimeout: false,
// Last fetch time
lastUpdateTime: 0,
}), }),
getters: { getters: {
getUserInfo(): UserInfo { getUserInfo(): UserInfo {
...@@ -47,6 +50,9 @@ export const useUserStore = defineStore({ ...@@ -47,6 +50,9 @@ export const useUserStore = defineStore({
getSessionTimeout(): boolean { getSessionTimeout(): boolean {
return !!this.sessionTimeout; return !!this.sessionTimeout;
}, },
getLastUpdateTime(): number {
return this.lastUpdateTime;
},
}, },
actions: { actions: {
setToken(info: string | undefined) { setToken(info: string | undefined) {
...@@ -59,6 +65,7 @@ export const useUserStore = defineStore({ ...@@ -59,6 +65,7 @@ export const useUserStore = defineStore({
}, },
setUserInfo(info: UserInfo) { setUserInfo(info: UserInfo) {
this.userInfo = info; this.userInfo = info;
this.lastUpdateTime = new Date().getTime();
setAuthCache(USER_INFO_KEY, info); setAuthCache(USER_INFO_KEY, info);
}, },
setSessionTimeout(flag: boolean) { setSessionTimeout(flag: boolean) {
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论