浏览代码

fix session timeout

Michael Wang 3 年之前
父节点
当前提交
cc6e298426
共有 2 个文件被更改,包括 14 次插入10 次删除
  1. 8 5
      src/plugins/axiosApp.ts
  2. 6 5
      src/plugins/axiosNotice.ts

+ 8 - 5
src/plugins/axiosApp.ts

@@ -12,6 +12,10 @@ import { useMainStore } from "@/store";
 
 
 let store = null as unknown as ReturnType<typeof useMainStore>;
 let store = null as unknown as ReturnType<typeof useMainStore>;
 
 
+setTimeout(() => {
+  store = useMainStore();
+}, 0);
+
 const config = {
 const config = {
   // baseURL: process.env.baseURL || process.env.apiUrl || ""
   // baseURL: process.env.baseURL || process.env.apiUrl || ""
   timeout: 1 * 60 * 1000, // Timeout
   timeout: 1 * 60 * 1000, // Timeout
@@ -37,9 +41,6 @@ function gToken(
 
 
 _axiosApp.interceptors.request.use(
 _axiosApp.interceptors.request.use(
   function (config) {
   function (config) {
-    if (!store) {
-      store = useMainStore();
-    }
     if (config.setGlobalMask) {
     if (config.setGlobalMask) {
       store.globalMask = true;
       store.globalMask = true;
     }
     }
@@ -98,8 +99,10 @@ _axiosApp.interceptors.response.use(
 
 
     // 登录失效 跳转登录页面
     // 登录失效 跳转登录页面
     if (status == 403 || status == 401) {
     if (status == 403 || status == 401) {
-      notifyInvalidTokenThrottled();
-      removeToken();
+      if (error.config.url !== "/api/ess/auth/logout") {
+        notifyInvalidTokenThrottled();
+        removeToken();
+      }
       return Promise.reject(error);
       return Promise.reject(error);
     } else if (status == 405) {
     } else if (status == 405) {
       if (showErrorMessage) {
       if (showErrorMessage) {

+ 6 - 5
src/plugins/axiosNotice.ts

@@ -2,8 +2,7 @@ import Vue from "vue";
 import { throttle } from "lodash-es";
 import { throttle } from "lodash-es";
 import { message } from "ant-design-vue";
 import { message } from "ant-design-vue";
 import { logout } from "@/api/loginPage";
 import { logout } from "@/api/loginPage";
-import { routeLogout } from "@/router";
-import { useRoute } from "vue-router";
+import router, { routeLogout } from "@/router";
 
 
 export const notifyInvalidTokenThrottled = throttle(() => {
 export const notifyInvalidTokenThrottled = throttle(() => {
   message.error({
   message.error({
@@ -11,9 +10,11 @@ export const notifyInvalidTokenThrottled = throttle(() => {
     duration: 10,
     duration: 10,
   });
   });
   setTimeout(() => {
   setTimeout(() => {
-    const route = useRoute();
-    logout().then(() =>
-      routeLogout({ cause: "主动退出", redirectTo: route.fullPath })
+    logout().finally(() =>
+      routeLogout({
+        cause: "登录失效",
+        redirectTo: router.currentRoute.value.fullPath,
+      })
     );
     );
   }, 3000);
   }, 3000);
   console.log("登录失效");
   console.log("登录失效");