refactor: ♻️ 用户信息不再本地持久化,改为内存态:刷新页面后需要重新请求用户信息

This commit is contained in:
Ray.Hao
2025-08-15 09:35:58 +08:00
parent d9b2f55a5e
commit a5da8d5788
8 changed files with 31 additions and 65 deletions

View File

@@ -3,16 +3,17 @@ import { store } from "@/store";
import AuthAPI, { type LoginFormData } from "@/api/auth.api";
import UserAPI, { type UserInfo } from "@/api/system/user.api";
import { Auth } from "@/utils/auth";
import { AuthStorage } from "@/utils/auth";
import { usePermissionStoreHook } from "@/store/modules/permission.store";
import { useDictStoreHook } from "@/store/modules/dict.store";
import { useTagsViewStore } from "@/store";
import { cleanupWebSocket } from "@/plugins/websocket";
export const useUserStore = defineStore("user", () => {
const userInfo = useStorage<UserInfo>("userInfo", {} as UserInfo);
// 用户信息
const userInfo = ref<UserInfo>({} as UserInfo);
// 记住我状态
const rememberMe = ref(Auth.getRememberMe());
const rememberMe = ref(AuthStorage.getRememberMe());
/**
* 登录
@@ -27,7 +28,7 @@ export const useUserStore = defineStore("user", () => {
const { accessToken, refreshToken } = data;
// 保存记住我状态和token
rememberMe.value = LoginFormData.rememberMe;
Auth.setTokens(accessToken, refreshToken, rememberMe.value);
AuthStorage.setTokens(accessToken, refreshToken, rememberMe.value);
resolve();
})
.catch((error) => {
@@ -104,7 +105,7 @@ export const useUserStore = defineStore("user", () => {
*/
function resetUserState() {
// 清除用户凭证
Auth.clearAuth();
AuthStorage.clearAuth();
// 重置用户信息
userInfo.value = {} as UserInfo;
}
@@ -113,7 +114,7 @@ export const useUserStore = defineStore("user", () => {
* 刷新 token
*/
function refreshToken() {
const refreshToken = Auth.getRefreshToken();
const refreshToken = AuthStorage.getRefreshToken();
if (!refreshToken) {
return Promise.reject(new Error("没有有效的刷新令牌"));
@@ -124,7 +125,7 @@ export const useUserStore = defineStore("user", () => {
.then((data) => {
const { accessToken, refreshToken: newRefreshToken } = data;
// 更新令牌,保持当前记住我状态
Auth.setTokens(accessToken, newRefreshToken, Auth.getRememberMe());
AuthStorage.setTokens(accessToken, newRefreshToken, AuthStorage.getRememberMe());
resolve();
})
.catch((error) => {
@@ -137,7 +138,7 @@ export const useUserStore = defineStore("user", () => {
return {
userInfo,
rememberMe,
isLoggedIn: () => !!Auth.getAccessToken(),
isLoggedIn: () => !!AuthStorage.getAccessToken(),
getUserInfo,
login,
logout,