Bläddra i källkod

fix: 修复登录信息缓存问题

chenhao 2 år sedan
förälder
incheckning
6c626e718b
5 ändrade filer med 9 tillägg och 10 borttagningar
  1. 1 1
      src/App.vue
  2. 1 1
      src/apis/common.ts
  3. 2 2
      src/apis/user.ts
  4. 3 4
      src/plugins/request.ts
  5. 2 2
      src/utils/common.ts

+ 1 - 1
src/App.vue

@@ -6,7 +6,7 @@
 import { getUserInfoHttp } from "@api/user";
 import { getLoginResult } from "@/utils/auth";
 if (getLoginResult()) {
-  getUserInfoHttp();
+  getUserInfoHttp(true);
 }
 </script>
 

+ 1 - 1
src/apis/common.ts

@@ -11,7 +11,7 @@ export const loginHttp = (data: LoginModel) => {
       noAuth: true,
     })
     .then(cacheLoginResult)
-    .then((response) => (getUserInfoHttp(), response));
+    .then((response) => (getUserInfoHttp(true), response));
 };
 
 /**

+ 2 - 2
src/apis/user.ts

@@ -4,10 +4,10 @@ import { getUserInfo, cacheUserInfo } from "@/utils/auth";
 /**
  * @description 获取当前用户信息
  */
-export const getUserInfoHttp = (): Promise<SystemUserInfo> => {
+export const getUserInfoHttp = (force:boolean = false): Promise<SystemUserInfo> => {
   const cachedUserInfo = getUserInfo();
 
-  return cachedUserInfo
+  return cachedUserInfo && !force
     ? Promise.resolve(cacheUserInfo(cachedUserInfo))
     : request
         .post<null, SystemUserInfo>("/api/user/my/info")

+ 3 - 4
src/plugins/request.ts

@@ -3,8 +3,7 @@ import { message } from "ant-design-vue";
 import { loadProgressBar } from "axios-progress-bar";
 import { signToken } from "@/plugins/signToken";
 import { filterConfigEmpty } from "@/plugins/configFilter";
-import { downloadBlob } from "@/utils/common";
-import router from "@/routes";
+import { downloadBlob,exitLogin } from "@/utils/common";
 
 const request = axios.create({
   baseURL: import.meta.env.VITE_APP_API_HOST,
@@ -68,8 +67,8 @@ request.interceptors.response.use(
         ([401, 403].includes(error.response.status) ||
           error.response.data?.code?.toString()?.startsWith("401"))
       ) {
-        router.push({ name: "login" });
-        message.error("登录状态已过期");
+        exitLogin(false)
+        message.error({content:"登录状态已过期",key:'token-valid'});
         return Promise.reject(error);
       }
       let msg = "";

+ 2 - 2
src/utils/common.ts

@@ -5,8 +5,8 @@ import router from "@/routes";
 import type { AxiosResponse } from "axios";
 
 /** 退出登录 */
-export const exitLogin = () => {
-  loginOutHttp();
+export const exitLogin = (http:boolean = true) => {
+  http && loginOutHttp();
   sessionStorageTool.remove(SESSION_STORAGE_KEYS.LOGIN_RESULT);
   sessionStorageTool.remove(SESSION_STORAGE_KEYS.USER_INFO);
   router.replace({ name: "login" });