fix: 🐛 修复注销登录location.reload导致接口无响应数据
This commit is contained in:
@@ -1,14 +1,14 @@
|
||||
import AuthAPI, { type LoginData } from "@/api/auth";
|
||||
import UserAPI, { type UserInfo } from "@/api/user";
|
||||
import { resetRouter } from "@/router";
|
||||
import { store } from "@/store";
|
||||
import { setToken, removeToken } from "@/utils/auth";
|
||||
import { usePermissionStoreHook } from "@/store/modules/permission";
|
||||
import { useDictStoreHook } from "@/store/modules/dict";
|
||||
|
||||
import AuthAPI, { type LoginData } from "@/api/auth";
|
||||
import UserAPI, { type UserInfo } from "@/api/system/user";
|
||||
|
||||
import { setToken, clearToken } from "@/utils/auth";
|
||||
|
||||
export const useUserStore = defineStore("user", () => {
|
||||
const user = ref<UserInfo>({
|
||||
roles: [],
|
||||
perms: [],
|
||||
});
|
||||
const userInfo = useStorage<UserInfo>("userInfo", {} as UserInfo);
|
||||
|
||||
/**
|
||||
* 登录
|
||||
@@ -30,7 +30,11 @@ export const useUserStore = defineStore("user", () => {
|
||||
});
|
||||
}
|
||||
|
||||
// 获取信息(用户昵称、头像、角色集合、权限集合)
|
||||
/**
|
||||
* 获取用户信息
|
||||
*
|
||||
* @returns {UserInfo} 用户信息
|
||||
*/
|
||||
function getUserInfo() {
|
||||
return new Promise<UserInfo>((resolve, reject) => {
|
||||
UserAPI.getInfo()
|
||||
@@ -39,11 +43,7 @@ export const useUserStore = defineStore("user", () => {
|
||||
reject("Verification failed, please Login again.");
|
||||
return;
|
||||
}
|
||||
if (!data.roles || data.roles.length <= 0) {
|
||||
reject("getUserInfo: roles must be a non-null array!");
|
||||
return;
|
||||
}
|
||||
Object.assign(user.value, { ...data });
|
||||
Object.assign(userInfo.value, { ...data });
|
||||
resolve(data);
|
||||
})
|
||||
.catch((error) => {
|
||||
@@ -52,12 +52,14 @@ export const useUserStore = defineStore("user", () => {
|
||||
});
|
||||
}
|
||||
|
||||
// user logout
|
||||
/**
|
||||
* 登出
|
||||
*/
|
||||
function logout() {
|
||||
return new Promise<void>((resolve, reject) => {
|
||||
AuthAPI.logout()
|
||||
.then(() => {
|
||||
location.reload(); // 清空路由
|
||||
clearUserSession();
|
||||
resolve();
|
||||
})
|
||||
.catch((error) => {
|
||||
@@ -66,21 +68,26 @@ export const useUserStore = defineStore("user", () => {
|
||||
});
|
||||
}
|
||||
|
||||
// remove token
|
||||
function resetToken() {
|
||||
/**
|
||||
* 清理用户会话
|
||||
*
|
||||
* @returns
|
||||
*/
|
||||
function clearUserSession() {
|
||||
return new Promise<void>((resolve) => {
|
||||
removeToken();
|
||||
resetRouter();
|
||||
clearToken();
|
||||
usePermissionStoreHook().resetRouter();
|
||||
useDictStoreHook().clearDictionaryCache();
|
||||
resolve();
|
||||
});
|
||||
}
|
||||
|
||||
return {
|
||||
user,
|
||||
login,
|
||||
userInfo,
|
||||
getUserInfo,
|
||||
login,
|
||||
logout,
|
||||
resetToken,
|
||||
clearUserSession,
|
||||
};
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user