一般来说接口参数签名,是为了防止数据泄露,接口参数签名也有其默认的规则,接下来就一起来探讨吧,话不多说直接上代码!
timest(times){
let date = new Date(times)
let Y = date.getFullYear()
let M =
(date.getMonth() + 1 < 10 ?
'0' + (date.getMonth() + 1) :
date.getMonth() + 1)
let D =
(date.getDate() < 10 ? '0' + date.getDate() : date.getDate())
let h =
(date.getHours() < 10 ? '0' + date.getHours() : date.getHours())
let m =
(date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes())
let s =
date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds()
return Y + M + D + h + m + s
},
sortObj(obj){
var keysArr = Object.keys(obj).sort();
var sortObj = {};
for (var i in keysArr) {sortObj[keysArr[i]] = encodeURIComponent(obj[keysArr[i]]); }
return sortObj;
},
generateSignText(params,key){
let isthrim = true;
for(var k in params){
if(params[k] == '' || params[k] == null){
isthrim = false
break;
}
}
if(isthrim == false){
return;
}
let arr = [];
for (var i in params) {
arr.push((i + "=" + params[i]));
}
let newUrl = arr.join(("&")) + key;
return newUrl
},
getsign(params,key){
let nonce1 = Math.random().toString(36).substr(2);
let nonce2 = Math.random().toString(36).substr(2);
let nonce =nonce1.concat("-").concat(nonce2)
let times = this.timest(Date.now())
if(params == undefined || params == null){
params = {};
}
params['x-nonce'] = nonce;
params['x-tmsp'] = times;
let obj = this.sortObj(params);
let signText = this.generateSignText(obj,key);
let sign = md5.hexMD5(signText)
let headers = {
'x-nonce': nonce,
'x-tmsp': times,
'x-sign':sign
}
return headers
}
当我们所有的方法都准备好,怎么用呢?直接上代码
import utils from "../utils/util"
let key = '这里是后端给的key'
let params = {}
export default function request(options){
console.log(options);
if(!options.data){
params = {}
}else{
params =JSON.parse(options.data);
}
let headers = utils.getsign(params,key)
return new Promise((resolve,reject)=>{
let user = utils.get('user');
wx.showLoading({
title: "加载中",
mask: true,
});
wx.request({
header:{
"x-token":user['x-token'],
'Content-Type': 'application/json',
'x-nonce': headers['x-nonce'],
'x-tmsp': headers['x-tmsp'],
'x-sign':headers['x-sign']
},
这些配置好就可以正常请求接口啦,如若有错请多多指正,相互学习,谢谢。太热了,我要去喝肥宅水了,哈哈。。。。