瀏覽代碼

代码优化

林旭祥 7 月之前
父節點
當前提交
69ac58cf14
共有 1 個文件被更改,包括 19 次插入8 次删除
  1. 19 8
      src/api/request.ts

+ 19 - 8
src/api/request.ts

@@ -1,6 +1,6 @@
 import axios, { AxiosResponse, InternalAxiosRequestConfig } from 'axios';
 import utils from '@/utils/index';
-import router from '@/router'
+import router from '@/router';
 
 axios.defaults.headers['Content-Type'] = 'application/json;charset=utf-8';
 axios.defaults.headers['auth'] = true;
@@ -14,15 +14,16 @@ const service = axios.create({
 service.interceptors.request.use(
   (config: InternalAxiosRequestConfig) => {
     //console.log("config", config)
-    const token = localStorage.getItem("token") || "";
+    const token = localStorage.getItem('token') || '';
     if (token && Boolean(config.headers['auth']) == true) {
       config.headers['Authorization'] = token;
     }
     if (!token && Boolean(config.headers['auth']) == true) {
-      delete config.headers['auth']
-      const message = "缺少凭证,请重新登录!";
-      if (router.currentRoute.value.path != "/login") {
-        router.push("/login");
+      delete config.headers['auth'];
+      const message = '缺少凭证,请重新登录!';
+      if (router.currentRoute.value.path != '/login') {
+        localStorage.clear();
+        router.push('/login');
       }
       ElMessage({ message: message, type: 'error', duration: 5 * 1000 });
       return Promise.reject(message);
@@ -42,7 +43,7 @@ service.interceptors.request.use(
     if (config.data instanceof FormData) {
       delete config.headers['Content-Type'];
     }
-    delete config.headers['auth']
+    delete config.headers['auth'];
     return config;
   },
   (error: any) => {
@@ -57,7 +58,10 @@ service.interceptors.response.use(
     const code = res.data.code;
     const message = res.data.message;
     if (code === 401) {
-      router.push("/login");
+      if (router.currentRoute.value.path != '/login') {
+        localStorage.clear();
+        router.push('/login');
+      }
       ElMessage({ message: message, type: 'error', duration: 5 * 1000 });
       return Promise.reject('凭证已过期,请重新登录!');
     } else {
@@ -70,6 +74,13 @@ service.interceptors.response.use(
       message = '网络异常';
     } else if (message.includes('timeout')) {
       message = '请求超时';
+    } else if (response.status == 401) {
+      if (router.currentRoute.value.path != '/login') {
+        localStorage.clear();
+        router.push('/login');
+      }
+      ElMessage({ message: message, type: 'error', duration: 5 * 1000 });
+      return Promise.reject('凭证已过期,请重新登录!');
     } else if (message.includes('Request failed with status code')) {
       if (response.data.status) {
         message = response.data.message;