From f9ac580238527a3e9f5a13b2c7ea49d02a7a1a83 Mon Sep 17 00:00:00 2001
From: yangyin <1850366751@qq.com>
Date: 星期四, 21 十一月 2024 20:44:59 +0800
Subject: [PATCH] 提交代码

---
 login/login/index.js |   10 --
 utils/api.js         |  217 ++++++++++++++++++++----------------------------------
 utils/constant.js    |    4 
 3 files changed, 85 insertions(+), 146 deletions(-)

diff --git a/login/login/index.js b/login/login/index.js
index 64ba9e4..3692deb 100644
--- a/login/login/index.js
+++ b/login/login/index.js
@@ -130,6 +130,7 @@
         });
       },
       success: function (res) {
+        console.log(res,133)
         wx.hideToast();
         var result = res.data;
         if (result.Code != 0) {
@@ -151,10 +152,6 @@
         }
         let Token = return_data.AccessToken
         let RefreshToken = return_data.RefreshToken
-        let isNeedToken = false //鏄惁闇�瑕乀oken 褰揟oken澶辨晥鐨勬椂鍊� 鍒ゆ柇鏄惁璺宠浆鐧诲綍
-        if (Token) {
-          isNeedToken = true
-        }
         let Checked = {}
         if (that.data.checked) {
           Checked = {
@@ -163,13 +160,11 @@
             checked: that.data.checked
           }
         }
-        let ExpreTime = new Date().getTime() //鑾峰彇褰撳墠鏃堕棿鎴�
         wx.setStorageSync('AccountInfo', Checked)
         wx.setStorageSync('AccessToken', {
           Token: Token,
           RefreshToken: RefreshToken,
-          ExpreTime: ExpreTime,
-          isNeedToken: isNeedToken,
+  
         })
         var return_user = return_data.User;
         userInfo.ID = return_user.ID
@@ -314,7 +309,6 @@
       inputWidth: screenWidth,
       inputHeight: screenHightScale * 177,
     });
-    console.log(111)
     // app.onReset()
   },
 
diff --git a/utils/api.js b/utils/api.js
index 14f2d33..1eb7fd1 100644
--- a/utils/api.js
+++ b/utils/api.js
@@ -3,168 +3,113 @@
 let Constant = require('../utils/constant.js')
 let app = getApp()
 let ACCESS_TOKEN_KEY = 'AccessToken'
+const expiredDateOffset = -1000 * 60 * 5;
 let API = (params) => {
-  let tokenInfo = wx.getStorageSync(ACCESS_TOKEN_KEY)
-  let currentDateTime = new Date().getTime()
-  if (!tokenInfo) {
-    wx.reLaunch({
-      url: '/login/login/index',
-    })
-    return
-  }
-  const token = tokenInfo.Token;
-  const refresh_token = tokenInfo.RefreshToken
-  if (!refresh_token) {
-    wx.reLaunch({
-      url: '/login/login/index',
-    })
-    return
-  }
-  //瑙f瀽token
-  const jwt_token = decryptJWT(token);
-  // 鑾峰彇token澶辨晥鏃堕棿
-  const exp_token = getJWTDate(jwt_token.exp).getTime()
-  // token澶辨晥鐘舵��
-  const isExpireByToken = currentDateTime >= exp_token
-  //瑙f瀽refreshtoken
-  const jwt_refresh_token = decryptJWT(refresh_token);
-  // 鑾峰彇refreshToken澶辨晥鏃堕棿
-  const exp_refresh_token = getJWTDate(jwt_refresh_token.exp).getTime();
-  // refreshToken澶辨晥鐘舵��
-  const isExpireByRefreshToken = currentDateTime >= exp_refresh_token
-  // 鍒ゆ柇 token鍜宺efreshToken鏄惁閮藉け鏁�,閮藉け鏁堝垯閲嶆柊鍒锋柊椤甸潰Token
-  if ((isExpireByToken && isExpireByRefreshToken) && tokenInfo.isNeedToken) {
-    RefreshToken() 
-  }
-  // 鍒ゆ柇 token 澶辨晥浣唕efreshToken娌″け鏁�
-  if ((!isExpireByToken && isExpireByRefreshToken) && tokenInfo.isNeedToken) {
-    tokenInfo.Token = refresh_token
-    wx.setStorageSync(ACCESS_TOKEN_KEY, tokenInfo)
-  }
   let defaultParams = {
     url: '',
     method: "GET",
     data: "",
     header: {
-      'content-type': 'application/json'
+        'content-type': 'application/json'
     },
     success: function () {},
     fail: function () {},
     complete: function () {}
+};
+let requestParam = Object.assign(defaultParams, params);
+let tokenInfo = wx.getStorageSync(ACCESS_TOKEN_KEY)
+let accessToken= tokenInfo.Token
+if (accessToken) {
+  // 灏� token 娣诲姞鍒拌姹傛姤鏂囧ご涓�
+  requestParam.header.Authorization = `Bearer ${accessToken}`;
+  // 鍒ゆ柇 accessToken 鏄惁杩囨湡
+  const isExpired = checkTokenExpired(accessToken, expiredDateOffset);
+  // token 宸茬粡杩囨湡
+  if (isExpired) {
+    // 鑾峰彇鍒锋柊 token
+    const tokenInfo2 = wx.getStorageSync(ACCESS_TOKEN_KEY);
+     let refreshAccessToken=tokenInfo2.RefreshToken
+    if (refreshAccessToken) {
+      const refreshIsExpired = checkTokenExpired(refreshAccessToken);
+      if (refreshIsExpired) {
+        wx.reLaunch({
+        url: '/login/login/index',
+      })
+      return
+      } else {
+        requestParam.header.Authorization = `Bearer ${refreshAccessToken}`;
+      }
+    }
   }
-  let requestParam = Object.assign(defaultParams, params)
-  // 鍒ゆ柇鏄惁瑕佹坊鍔爐oken
-  if (tokenInfo.isNeedToken == true) {
-    requestParam.header.Authorization = 'Bearer ' + tokenInfo.Token
-  }
-  wx.request({
+
+}
+
+
+wx.request({
     url: requestParam.url,
     method: requestParam.method,
     data: requestParam.data,
     header: requestParam.header,
     success: res => {
-      let result = res.data
-      if (result.Data != undefined && result.Data == 401) {
-        RefreshToken()
-        return
-      }
-      if (result.Code && result.Code != 0) {
-        if (result.Code == -3) {
-          wx.showModal({
-            title: result.Message,
-            complete: (res) => {
-              if (res.cancel) {
+// 鍙兘鍙� access-token锛屼笉鑳借窡 accessTokenKey 涓�鏍�
+const accessToken = res.header['access-token'];
+// 鍙兘鍙� x-access-token'锛屼笉鑳借窡 refreshAccessTokenKey 涓�鏍�
+const refreshAccessToken = res.header['x-access-token'];
 
-              }
-
-              if (res.confirm) {
-
-              }
-            }
+// 鍒ゆ柇鏄惁鏄棤鏁� token
+if (accessToken === 'invalid_token') {
+  wx.reLaunch({
+    url: '/login/login/index'
+  })
+  return
+}
+// 鍒ゆ柇鏄惁瀛樺湪鍒锋柊 token锛屽鏋滃瓨鍦ㄥ垯瀛樺偍鍦ㄦ湰鍦�
+else if (refreshAccessToken && accessToken && accessToken !== 'invalid_token') {
+  wx.setStorageSync(ACCESS_TOKEN_KEY, {
+    Token: accessToken,
+    RefreshToken: refreshAccessToken,
+});
+}
+        let result = res.data;
+        if (result.Data!= undefined && result.Data == 401) {
+          // 鍒锋柊鎴愬姛鍚庨噸鏂板彂璧疯姹�
+          wx.reLaunch({
+            url: '/login/login/index'
           })
-
-        } else {
-          wx.showToast({
-            title: result.Message,
-            icon: 'error',
-            duration: 1500
-          })
-          RefreshToken()
-          return
+            return;
         }
-      }
-      requestParam.success(res)
+        if (result.Code && result.Code!= 0) {
+            if (result.Code == -1&& result.Error === 'A099') {
+              wx.reLaunch({
+                url: '/login/login/index'
+              })
+                return;
+
+            } 
+        }
+        requestParam.success(res);
     },
     fail: err => {
-      requestParam.fail(err)
+        requestParam.fail(err);
     },
     complete: () => {
-      requestParam.complete()
+        requestParam.complete();
     }
-  })
+});
 
 }
-const RefreshToken = () => {
-  // 鑾峰彇璐︽埛淇℃伅
-  let accountInfo = wx.getStorageSync("LoginUserInfo")
-  // 鑾峰彇鐧诲綍鐨勭敤鎴蜂俊鎭�
-  let data = {
-    LoginName: accountInfo.phone,
-    LoginPwd: accountInfo.password,
-    Software: Constant.Software
-  }
-  // console.log(JSON.stringify(data),110)
-  wx.request({
-    url: Constant.BASE_AUTH_URL + "Auth/User/Login/LoginSoftwareStandardBySystemAccount@V1.0",
-    method: 'POST',
-    data: data,
-    header: {
-      'content-type': 'application/json'
-    },
-    fail: function (err) { //璇锋眰澶辫触
-      wx.showModal({
-        content: '缃戠粶淇″彿涓嶅ソ',
-        showCancel: false,
-        confirmColor: "#39b5de"
-      });
-    },
-    success: function (res) {
-      // console.log(res, "鏂扮殑token淇℃伅")
-      var result = res.data;
-      // console.log(result);
-      if (result.Code != 0) {
-        // wx.showToast({
-        //   title: result.Message,
-        //   icon: "none",
-        //   duration: 2000
-        // })
-        return;
-      }
-      var return_data = result.Data;
-      if (return_data.Status != 0) {
-        wx.showToast({
-          title: result.Message,
-          icon: "none",
-          duration: 2000
-        })
-        return;
-      }
-      let Token = return_data.AccessToken
-      let RefreshToken = return_data.RefreshToken
-      let isNeedToken = false //鏄惁闇�瑕乀oken 褰揟oken澶辨晥鐨勬椂鍊� 鍒ゆ柇鏄惁璺宠浆鐧诲綍
-      if (Token) {
-        isNeedToken = true
-      }
-      let ExpreTime = new Date().getTime() //鑾峰彇褰撳墠鏃堕棿鎴�
-      wx.setStorageSync('AccessToken', {
-        Token: Token,
-        RefreshToken: RefreshToken,
-        ExpreTime: ExpreTime,
-        isNeedToken: isNeedToken,
-      })    
-    }
-  })
-}
+const checkTokenExpired = (token, expiredOffset = 0) => {
+	const jwt = decryptJWT(token);
+	const date = getJWTDate(jwt.exp) 
+	const exp = date.getTime() + expiredOffset;
+	const currentTime = new Date().getTime();
+	const isExpired = currentTime > exp;
+	return isExpired;
+};
+/**
+ * 鍒锋柊浠ょ墝鐨勫嚱鏁�
+ * @returns {Promise} - 鍒锋柊浠ょ墝鐨勫紓姝ユ搷浣滅殑 Promise 瀵硅薄
+ */
 
 //瑙e瘑 JWT token 鐨勪俊鎭�
 function decryptJWT(token) {
diff --git a/utils/constant.js b/utils/constant.js
index 11fb6bb..2711701 100644
--- a/utils/constant.js
+++ b/utils/constant.js
@@ -33,8 +33,8 @@
     Login: {
       DemoUserID: 1,
       DemoEmployeeID: 1,
-      LogoUrl: "http://szjt.beng35.com/web/assets/miniProgram/LoginLogo.png",
-      BackgroupImageUrl: "http://szjt.beng35.com/web/assets/miniProgram/LoginBackground.png"
+      LogoUrl: "",
+      BackgroupImageUrl: ""
     }
   },
   SoftWareVersion: SOFTWARE_VERSION,

--
Gitblit v1.9.3