asd26269546 il y a 1 an
Parent
commit
1ceedab0fe
2 fichiers modifiés avec 25 ajouts et 6 suppressions
  1. 1 0
      package.json
  2. 24 6
      src/utils/request.js

+ 1 - 0
package.json

@@ -32,6 +32,7 @@
     "@vueup/vue-quill": "^1.0.0-alpha.40",
     "@vueuse/core": "9.5.0",
     "axios": "0.27.2",
+    "crypto-js": "^4.1.1",
     "echarts": "^5.4.0",
     "element-plus": "2.2.27",
     "file-saver": "2.0.5",

+ 24 - 6
src/utils/request.js

@@ -18,7 +18,7 @@ import {
   saveAs
 } from 'file-saver'
 import useUserStore from '@/store/modules/user'
-
+import CryptoJS from 'crypto-js'
 let downloadLoadingInstance;
 // 是否显示重新登录
 export let isRelogin = {
@@ -33,7 +33,15 @@ const service = axios.create({
   // 超时
   timeout: 100000
 })
-
+function generateRandomString(length) {  
+  var result = '';  
+  var characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';  
+  var charactersLength = characters.length;  
+  for (var i = 0; i < length; i++) {  
+      result += characters.charAt(Math.floor(Math.random() * charactersLength));  
+  }  
+  return result;  
+} 
 // request拦截器
 service.interceptors.request.use(config => {
   // 是否需要设置 token
@@ -41,7 +49,20 @@ service.interceptors.request.use(config => {
   // 是否需要防止数据重复提交
   const isRepeatSubmit = (config.headers || {}).repeatSubmit === false
   if (getToken() && !isToken) {
-    config.headers['Authorization'] = 'Bearer ' + getToken() // 让每个请求携带自定义token 请根据实际情况自行修改
+     // 待加密的数据
+     let randomNumber = generateRandomString(20)
+     //后面加20位随机数
+     let data = getToken() + new Date().getTime() + randomNumber;
+
+     // 密钥,注意:密钥长度必须为16, 24, 32字节对应AES-128, AES-192, AES-256
+     let key = CryptoJS.enc.Utf8.parse('N[9f%2gKyo7(GNv3');
+     // AES加密
+     let encrypted = CryptoJS.AES.encrypt(data, key, {
+         mode: CryptoJS.mode.ECB,
+         padding: CryptoJS.pad.Pkcs7
+     });
+    config.headers['Authorization'] = encrypted // 让每个请求携带自定义token 请根据实际情况自行修改
+    config.headers['randomNumber'] = randomNumber
   }
   // get请求映射params参数
   if (config.method === 'get' && config.params) {
@@ -67,8 +88,6 @@ service.interceptors.request.use(config => {
       const interval = 300; // 间隔时间(ms),小于此时间视为重复提交
       if (s_data === requestObj.data && requestObj.time - s_time < interval && s_url === requestObj.url) {
         const message = '数据正在处理,请勿重复提交';
-        // console.warn(`[${s_url}]: ` + message)
-        console.log(s_url, '重复提交的url');
         return Promise.reject(new Error(message))
       } else {
         cache.session.setJSON('sessionObj', requestObj)
@@ -77,7 +96,6 @@ service.interceptors.request.use(config => {
   }
   return config
 }, error => {
-  console.log(error)
   Promise.reject(error)
 })