asd26269546 1 ano atrás
pai
commit
bcf7c3eb54
1 arquivos alterados com 23 adições e 9 exclusões
  1. 23 9
      src/utils/request.js

+ 23 - 9
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,11 +49,20 @@ service.interceptors.request.use(config => {
   // 是否需要防止数据重复提交
   const isRepeatSubmit = (config.headers || {}).repeatSubmit === false
   if (getToken() && !isToken) {
-    //对token进行AES加密 在后面拼接当前时间戳和20位随机数
-    // let token = getToken() + '||' + new Date().getTime() + '||' + Math.random().toString(36).substr(2)
-
+     // 待加密的数据
+     let randomNumber = generateRandomString(20)
+     //后面加20位随机数
+     let data = getToken() + new Date().getTime() + randomNumber;
 
-    config.headers['Authorization'] = 'Bearer ' + getToken() // 让每个请求携带自定义token 请根据实际情况自行修改
+     // 密钥,注意:密钥长度必须为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) {
@@ -71,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)
@@ -81,7 +96,6 @@ service.interceptors.request.use(config => {
   }
   return config
 }, error => {
-  console.log(error)
   Promise.reject(error)
 })