处理请求带验证信息
使用的是Hmacsha1:
操作与后台衔接
必要的参数:
appKey // 密钥 这个是固定的 后台解密也要用这个
timestamp // 时间戳 这个是用来判断时间的 后台设置的时间是5分钟
signature // 生成加密信息
signature 这个加密信息和后台的生成方式是一样的
所以要把appKey和timestamp 还有要传递的参数再次传给后台 还有加密信息signature
后台是要判断你的时间 防止有人中间截取了这个信息,进行处理,所以没有密钥,解析时间太长,再次传给后台的 时间过长 就判断你是非法的请求
后台拿到时间 去比对 看是否超过5分钟 并且将拿到的数据进行加密 和前端生成的加密信息signature的值进行比对
防止重放攻击 步骤:
- 安装
npm i crypto-js --save
- 方法封装:
import Base64 from 'crypto-js/enc-base64';
import Hmacsha1 from 'crypto-js/hmac-sha1';
import moment from 'moment'
export function RequestEn(source){
const data = source
data.appKey = '234' // 密钥
const wTime = moment(moment().format('YYYY-MM-DD HH:mm:ss')).utc().format('YYYY-MM-DD HH:mm:ss')
data.timestamp = `${wTime}Z` // 时间
const add = Object.entries(data);
let str = '';
add.forEach(i=> {
str+=`${i[0]}${i[1]}`
})
// 生成加密信息
const signature = Base64.stringify((Hmacsha1(str,'123456')))
const sigObj = {signature}
return Object.assign(data,sigObj)
}
- 调用该函数:
RequestEn(params)