From a10e10435ee2d6aab8e2475d8a268dd6cf8e6d28 Mon Sep 17 00:00:00 2001
From: songshankun <songshankun@foxmail.com>
Date: 星期五, 03 十一月 2023 14:49:43 +0800
Subject: [PATCH] feat: 接入 jwt token

---
 src/common/untils/request.js |   61 ++++++++++++++++++++++++++++--
 1 files changed, 56 insertions(+), 5 deletions(-)

diff --git a/src/common/untils/request.js b/src/common/untils/request.js
index 9270bbc..ef8fcc9 100644
--- a/src/common/untils/request.js
+++ b/src/common/untils/request.js
@@ -3,6 +3,35 @@
 
 // import router from '@/router'
 
+// 寮�鍙戠幆澧冧笅灏嗚嚜宸辩殑token澶嶅埗鍒拌繖閲�, 涔熷彲浠ュ湪娴忚鍣ㄤ腑鎵嬪姩娣诲姞token鍒癱ookie涓�,cookie涓殑token浼樺厛
+const DEV_TOKEN =  ''
+function environmentType(){
+  let type
+  if (location.href.includes('192.168.20.119')) {
+    type = 'test'
+  } else if (location.href.includes('192.168') || location.href.includes('localhost')) {
+    type = 'dev'
+  } else {
+    type = 'prod'
+  }
+
+  return type
+}
+const isDev = environmentType() === 'dev'
+
+const getApsPage = () => {
+  // 棣栭〉閮ㄧ讲鍦ㄥ悇涓幆澧冪殑绔彛
+  const loginPathMap = {
+    prod:`//${window.location.hostname}:9080`,
+    test:`//192.168.20.119:9080`,
+    // 鎯宠烦鍒版湰鍦板惎鍔ㄧ殑鐧诲綍椤电殑璇濋渶瑕佹妸dev鏀规垚浣犳湰鍦伴」鐩矾寰�
+    dev: `//192.168.20.124:8081`
+  }
+
+  return loginPathMap[environmentType()]
+}
+
+
 const Axios = axios.create({
   responseType: "json",
   withCredentials: true // 鏄惁鍏佽甯ookie杩欎簺
@@ -11,11 +40,16 @@
 /* //POST浼犲弬搴忓垪鍖�(娣诲姞璇锋眰鎷︽埅鍣�) */
 Axios.interceptors.request.use(
   (config) => {
-    // 鑻ユ槸鏈夊仛閴存潈token , 灏辩粰澶撮儴甯︿笂token
-    // let token = util.cookies.get("token");
-    // if (token != undefined) {
-    //   config.headers.Authorization = "Bearer " + token;
-    // }
+    let token = document.cookie.replace(
+        /(?:(?:^|.*;\s*)token\s*=\s*([^;]*).*$)|^.*$/,
+        "$1",
+    );
+    if (isDev){
+      token = token || DEV_TOKEN
+    }
+    if (token) {
+      config.headers.Authorization = "Bearer " + token;
+    }
 
     return config
   },
@@ -30,6 +64,14 @@
     /* //瀵瑰搷搴旀暟鎹仛浜涗簨 */
     if (res.data.code === 200) {
       return res.data ? res.data : {}
+    }else if([2012,2013,2014,2015].includes(res.data.code)){
+      if (isDev){
+        alert("JWT澶辨晥")
+      }else {
+        //   JWT閴存潈澶辨晥 璺宠浆鍒扮櫥褰曢〉
+        window.location = getApsPage()+'/login'
+      }
+      return Promise.reject(res.data)
     } else {
       Message({
         message: res.data.msg,
@@ -40,6 +82,15 @@
     }
   },
   (error) => {
+    if (error.response.status === 401){
+      if (isDev){
+        alert("JWT澶辨晥")
+      }else {
+        //   JWT閴存潈澶辨晥 璺宠浆鍒扮櫥褰曢〉
+        window.location = getApsPage()+'/login'
+      }
+    }
+
     let { message } = error
     if (message === "Network Error") {
       message = "鍚庣鎺ュ彛杩炴帴寮傚父"

--
Gitblit v1.8.0