From c004767a84f293ab98eb3948bbcd2af64b264c57 Mon Sep 17 00:00:00 2001
From: zhengyiming <540361168@qq.com>
Date: 星期五, 28 十一月 2025 17:27:57 +0800
Subject: [PATCH] fix: 等保

---
 src/utils/request/common.ts |   31 +++++++++++++++++++++++++++++++
 src/utils/request/index.ts  |    8 +++++---
 2 files changed, 36 insertions(+), 3 deletions(-)

diff --git a/src/utils/request/common.ts b/src/utils/request/common.ts
new file mode 100644
index 0000000..ab56964
--- /dev/null
+++ b/src/utils/request/common.ts
@@ -0,0 +1,31 @@
+import cryptoJs from 'crypto-js';
+import { type IRequestOptions } from 'senior-request';
+
+const ApiSignPrivateKey = 'X07uIM2cHK5IJhDi4ppoxQglYE21gq3E';
+
+export function getTimestampInSeconds() {
+  var date = new Date();
+  var timestampInSeconds = Math.floor(date.getTime() / 1000);
+  return timestampInSeconds;
+}
+
+export function generateApiSign(
+  token: string,
+  userId: string,
+  timestampInSeconds: number | string
+) {
+  return cryptoJs.MD5(`${token}-${userId}-${timestampInSeconds}-${ApiSignPrivateKey}`).toString();
+}
+
+export function setRequestheaders(config: IRequestOptions, accessToken: string, userId: string) {
+  config.headers['Authorization'] = 'Bearer ' + accessToken;
+  const timestampInSeconds = getTimestampInSeconds();
+  config.headers['userId'] = userId;
+  config.headers['time'] = timestampInSeconds;
+  config.headers['sign'] = generateApiSign(
+    config.headers['Authorization'],
+    userId,
+    timestampInSeconds
+  );
+  return config;
+}
diff --git a/src/utils/request/index.ts b/src/utils/request/index.ts
index 3ebb819..44e164f 100644
--- a/src/utils/request/index.ts
+++ b/src/utils/request/index.ts
@@ -8,6 +8,7 @@
 import { ElLoading as Loading, ElNotification } from 'element-plus';
 import { router } from '@/router';
 import { Message, tokenIsExpired } from '@/utils';
+import { setRequestheaders } from './common';
 
 // 鍔犺浇鐜鍙橀噺 VITE_PROXY_DOMAIN锛堝紑鍙戠幆澧冿級  VITE_PROXY_DOMAIN_REAL锛堟墦鍖呭悗鐨勭嚎涓婄幆澧冿級
 const { VITE_PROXY_DOMAIN, VITE_PROXY_DOMAIN_REAL, DEV } = loadEnv();
@@ -170,7 +171,7 @@
   requestInterceptors: [
     [
       (config) => {
-        const $config = config;
+        let $config = config;
         // 寮�鍚繘搴︽潯鍔ㄧ敾
         if (config.needNProcess) {
           NProgress.start();
@@ -210,7 +211,7 @@
                     clientId: userStore.accountInfo.client_id,
                   })
                   .then((res) => {
-                    $config.headers['Authorization'] = 'Bearer ' + res.accessToken;
+                    $config = setRequestheaders($config, res.accessToken, userStore.userId);
                     BoleRequest.requests.forEach((cb) => cb(res.accessToken));
                     BoleRequest.requests = [];
                   })
@@ -220,7 +221,8 @@
               }
               resolve(BoleRequest.retryOriginalRequest($config));
             } else {
-              $config.headers['Authorization'] = 'Bearer ' + token;
+              const userStore = useUserStoreHook();
+              $config = setRequestheaders($config, token, userStore.userId);
               resolve($config);
             }
           } else {

--
Gitblit v1.9.1