|
@@ -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)
|
|
|
})
|
|
|
|