mirror of
https://github.com/vbenjs/vben-admin-thin-next.git
synced 2025-02-02 18:08:40 +08:00
feat: always refresh userinfo when page reload
每次刷新整个页面时都从接口更新用户信息
This commit is contained in:
parent
53e79a2d94
commit
cc46935a82
@ -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) {
|
||||
|
Loading…
Reference in New Issue
Block a user