瀏覽代碼

增加token 加参数使用sm2加密 传到后台

wukai 1 年之前
父節點
當前提交
7c75aa547e
共有 2 個文件被更改,包括 49 次插入1 次删除
  1. 4 1
      src/utils/request.js
  2. 45 0
      src/utils/sm2util.js

+ 4 - 1
src/utils/request.js

@@ -6,6 +6,7 @@ import { tansParams, blobValidate } from '@/utils/ruoyi'
 import cache from '@/plugins/cache'
 import { saveAs } from 'file-saver'
 import useUserStore from '@/store/modules/user'
+import {encode, decode} from '@/utils/sm2util'
 
 let downloadLoadingInstance;
 // 是否显示重新登录
@@ -27,7 +28,9 @@ service.interceptors.request.use(config => {
   // 是否需要防止数据重复提交
   const isRepeatSubmit = (config.headers || {}).repeatSubmit === false
   if (getToken() && !isToken) {
-    config.headers['Authorization'] = 'Bearer ' + getToken() // 让每个请求携带自定义token 请根据实际情况自行修改
+	//组装token,使用原token+"/yyyymmddhhmiss" sm2加密后传入后台
+	const str=getToken()+"///"+new Date().getTime();
+    config.headers['Authorization'] = 'Bearer ' + encode(str); // 让每个请求携带自定义token 请根据实际情况自行修改
   }
   // get请求映射params参数
   if (config.method === 'get' && config.params) {

+ 45 - 0
src/utils/sm2util.js

@@ -0,0 +1,45 @@
+import {sm2} from 'sm-crypto'
+ 
+const PUBLICKEY='04404c634de4deda80486b4a331adf03448a449d980fe040540abe242ba275cc815aada6a63c63e24d4672e14360c72b1819914f49708f25498ededc2217384960'
+const PRIVATEKEY='ebaedbccd3f730ec1985b945f10429b468c7f3f70e66da19b8657f023e6cded4'
+
+/**
+ * 加密
+ */
+export function encode(msgString) {
+	const msg = msgString
+	if (typeof msgString !== 'string') {
+		msg = JSON.stringify(msgString)
+	}
+	// 1 - C1C3C2;	0 - C1C2C3;	默认为1
+	const cipherMode = 1
+	const publicKey = PUBLICKEY
+	// 加密结果
+	const encryptData = sm2.doEncrypt(msg, publicKey, cipherMode)
+	//Base64编码 自行选择是否使用
+	//const baseEncode = Base64.encode(encryptData)
+	// 加密后的密文前需要添加04,后端才能正常解密 (不添加04,后端处理也可以)
+	const encrypt = '04' + encryptData
+	return encrypt
+}
+
+
+/**
+ * 解密
+ */
+export function decode(enStr) {
+	const msg = enStr
+	if (typeof enStr !== 'string') {
+		msg = JSON.stringify(enStr)
+	}
+	// 1 - C1C3C2;	0 - C1C2C3;  默认为1
+	const cipherMode = 1
+	const privateKey = PRIVATEKEY
+	const enval = enStr.substring(2)
+	// 解密结果
+	const doDecrypt = sm2.doDecrypt(enval, privateKey, cipherMode)
+	// 解密后类型转换
+	const objData = JSON.parse(doDecrypt)
+	return objData
+
+}