From 269bf1596faaa4feb45d0f86c8e44855744bc62c Mon Sep 17 00:00:00 2001
From: liyuetong
Date: Wed, 15 Dec 2021 17:47:14 +0800
Subject: [PATCH] =?UTF-8?q?=E9=9A=8F=E6=9C=BA=E5=AF=86=E7=A0=81=E5=8A=A0?=
=?UTF-8?q?=E5=AF=86=E8=A7=A3=E5=AF=86--v2=E7=8E=AF=E5=A2=83=EF=BC=8C?=
=?UTF-8?q?=E4=B8=8D=E4=BC=A0signature=E8=A7=A3=E5=AF=86=E4=B8=8D=E5=87=BA?=
=?UTF-8?q?=E6=9D=A5=E9=97=AE=E9=A2=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/assets/js/utils/cryptoJsUtilV2.js | 47 ++++++++++++++++++++++
src/assets/js/utils/request.js | 58 +++++++++++++++------------
src/config/index.js | 4 +-
3 files changed, 81 insertions(+), 28 deletions(-)
create mode 100644 src/assets/js/utils/cryptoJsUtilV2.js
diff --git a/src/assets/js/utils/cryptoJsUtilV2.js b/src/assets/js/utils/cryptoJsUtilV2.js
new file mode 100644
index 000000000..1282179f0
--- /dev/null
+++ b/src/assets/js/utils/cryptoJsUtilV2.js
@@ -0,0 +1,47 @@
+import CryptoJS from 'crypto-js'
+export default {
+ AESEncrypt: function(data, keys) {
+ //加密
+ var key = CryptoJS.enc.Hex.parse(keys)
+ var iv = CryptoJS.enc.Utf8.parse('0123456789ABCDEF') //偏移量
+ var encrypted = CryptoJS.AES.encrypt(data, key, {
+ iv: iv,
+ mode: CryptoJS.mode.CBC,
+ padding: CryptoJS.pad.Pkcs7
+ })
+ return encrypted.toString()
+ },
+ AESDecrypt: function(encrypted, keys) {
+ //解密
+ var key = CryptoJS.enc.Hex.parse(keys)
+ var iv = CryptoJS.enc.Utf8.parse('0123456789ABCDEF')
+ var decrypted = CryptoJS.AES.decrypt(encrypted, key, {
+ iv: iv,
+ mode: CryptoJS.mode.CBC,
+ padding: CryptoJS.pad.Pkcs7
+ })
+ return CryptoJS.enc.Utf8.stringify(decrypted)
+ },
+ AESCacheEncrypt: function(data, keys) {
+ //加密 緩存
+ var key = CryptoJS.enc.Hex.parse(keys)
+ var iv = CryptoJS.enc.Utf8.parse('0123456789ABCDEF') //偏移量
+ var encrypted = CryptoJS.AES.encrypt(data, key, {
+ iv: iv,
+ mode: CryptoJS.mode.CBC,
+ padding: CryptoJS.pad.Pkcs7
+ })
+ return encrypted.toString()
+ },
+ AESCacheDecrypt: function(encrypted, keys) {
+ //解密 緩存
+ var key = CryptoJS.enc.Hex.parse(keys)
+ var iv = CryptoJS.enc.Utf8.parse('0123456789ABCDEF')
+ var decrypted = CryptoJS.AES.decrypt(encrypted, key, {
+ iv: iv,
+ mode: CryptoJS.mode.CBC,
+ padding: CryptoJS.pad.Pkcs7
+ })
+ return CryptoJS.enc.Utf8.stringify(decrypted)
+ }
+}
diff --git a/src/assets/js/utils/request.js b/src/assets/js/utils/request.js
index 2b98ee9e9..ae9d0f4b2 100644
--- a/src/assets/js/utils/request.js
+++ b/src/assets/js/utils/request.js
@@ -1,5 +1,5 @@
import axios from 'axios'
-// import AESTools from '@/assets/js/utils/cryptoJsUtil'
+import AESToolsV2 from '@/assets/js/utils/cryptoJsUtilV2'
import {
MD5,
RSAEncrypt,
@@ -155,14 +155,18 @@ service.interceptors.request.use(
message: '加载中……'
})
}
- // 生成本次请求随机密钥
let masterKey
- if (!window.localStorage.getItem('masterKey')) {
- masterKey = randomString();
- window.localStorage.setItem('masterKey',masterKey)
- } else {
- masterKey = window.localStorage.getItem('masterKey')
+ if(configApp.API_VERSION == 'v3'){
+ // 生成本次请求随机密钥
+ if (!window.localStorage.getItem('masterKey')) {
+ masterKey = randomString();
+ window.localStorage.setItem('masterKey',masterKey)
+ } else {
+ masterKey = window.localStorage.getItem('masterKey')
+ }
}
+ // token 不存在初始化处理
+ let token = CacheUtils.getLocItem('token')
/**
* 请求拦截处理(待添加 判断走统一网关处理)
*/
@@ -195,15 +199,13 @@ service.interceptors.request.use(
console.log(AESDecrypt(config.data.data, masterKey));
}
}else if(configApp.API_VERSION == 'v2'){
- let encrypt = AESEncrypt(JSON.stringify(config.data), configApp.REQ_PWD)
+ config.headers['signature'] = MD5(timeStr + CacheUtils.getLocItem('token'))
+ let encrypt = AESToolsV2.AESEncrypt(JSON.stringify(config.data), configApp.REQ_PWD)
config.data = { data: encrypt }
}
- // config.data = { data: encrypt }
}
}
- // token 不存在初始化处理
- let token = CacheUtils.getLocItem('token')
if (!token) {
console.log('token====>>', token)
// 设备类型
@@ -229,7 +231,6 @@ service.interceptors.request.use(
// 添加请时间戳
let timeStr = new Date().getTime() + ''
config.headers['timeStr'] = timeStr
- // config.headers['signature'] = MD5(timeStr + CacheUtils.getLocItem('token'))
return config
},
error => {
@@ -249,20 +250,25 @@ service.interceptors.response.use(
/api\/$/.test(response.config.url.split(configApp.API_VERSION)[0])
) {
if (res.response) {
- // 正常情況返回必有response 节点
- // 返回结果的随机密钥
- let masterKey;
- if (!window.localStorage.getItem('masterKey')) {
- return Promise.reject('密钥失效')
- } else {
- masterKey = window.localStorage.getItem('masterKey');
- }
- console.log('请求结果response' + response)
- console.log('请求结果masterKey:' + masterKey)
- console.log(JSON.parse(AESDecrypt(response.data.response, masterKey)))
- // 使用随机密钥解密返回结果data
- res = JSON.parse(AESDecrypt(res.response, masterKey))
- // res = JSON.parse(AESTools.AESDecrypt(res.response, configApp.REQ_PWD))
+ if(configApp.API_VERSION == 'v3'){
+ // 正常情況返回必有response 节点
+ // 返回结果的随机密钥
+ let masterKey;
+ if (!window.localStorage.getItem('masterKey')) {
+ return Promise.reject('密钥失效')
+ } else {
+ masterKey = window.localStorage.getItem('masterKey');
+ }
+ console.log('请求结果response' + response)
+ console.log('请求结果masterKey:' + masterKey)
+ console.log(JSON.parse(AESDecrypt(response.data.response, masterKey)))
+ // 使用随机密钥解密返回结果data
+ res = JSON.parse(AESDecrypt(res.response, masterKey))
+ }else if(configApp.API_VERSION == 'v2'){
+ // 使用固定密钥解密返回结果data
+ res = JSON.parse(AESToolsV2.AESDecrypt(res.response, configApp.REQ_PWD))
+ console.log(JSON.parse(AESToolsV2.AESDecrypt(res.response, configApp.REQ_PWD)),'JSON.parse(AESDecrypt(res.response, configApp.REQ_PWD))')
+ }
}
}
diff --git a/src/config/index.js b/src/config/index.js
index 84f4b77a0..8915ead85 100644
--- a/src/config/index.js
+++ b/src/config/index.js
@@ -19,7 +19,7 @@ let apiDomain, imgDomain, assetsUrl, mainUrl, payUrl, zssqUrl, REQ_PWD, CACHE_EN
console.log('环境:', process.env.VUE_APP_FLAG)
switch (process.env.VUE_APP_FLAG) {
case 'dev':
- apiDomain = 'https://iagentsales-test2.e-guofu.com:5200/api/v1' // 国富api ///api/v1
+ apiDomain = 'https://iagentsales-test2.e-guofu.com:5200/api/v2' // 国富api ///api/v1
imgDomain = 'https://iagentsales-test3.e-guofu.com:5443/updown' // dev
// 静态服务资源
assetsUrl = 'https://iagentsales-test2.e-guofu.com:443/app/'
@@ -31,7 +31,7 @@ switch (process.env.VUE_APP_FLAG) {
// zssqUrl = 'https://iagentsales-test2.e-guofu.com:5100/html/test/index.html#/'
REQ_PWD = '41424344454631323334353637383930'
CACHE_ENCRYP = '41424344454631323334353637383930'
- API_VERSION = 'v1'
+ API_VERSION = 'v2'
break
case 'uat':
apiDomain = 'https://iagentsales-test2.e-guofu.com:5200/api/v1' // 国富api