vue项目登录签名验证
1.登陆认证(demo版暂只支持手机号登陆)- 同时获取用户基本信息step1: app端通过appId向微信拉取authorization_codestep2:请求接口urlcreated(){//获取sessionStorge 数据 调用imToken,一般在调用到该界面后肯定是有数据的,及时获取到token数据if (imToken() === nu...
·
1.登陆认证(demo版暂只支持手机号登陆)- 同时获取用户基本信息
step1: app端通过appId向微信拉取authorization_code
step2:请求接口url
created(){
//获取sessionStorge 数据 调用imToken,一般在调用到该界面后肯定是有数据的,及时获取到token数据
if (imToken() === null) {
this.userLogin();
}
},
在此处进行获取imToken值
function imToken() {
return sessionStorage.getItem('imToken');
}
此时若不含值,则进行信息登录重新获取
methods:{
//用户信息登录
async userLogin() {
//测试账号数据信息
let params = {"lg_pin":"","logType":"","cellPhone":""};
const res = await this.$http.get(this.$api.login, params);
//调取数据成功
if (res.data.code === 0) {
//判断数据是否为空
if (res.data.data.length != 0 || res.data.data.length != null) {
setImtoken(res.data.data.imToken);
setPin(res.data.data.pin);
} else {
}
}else {
setImtoken(null)
}
}
},
2.在api接口中实现加密/转码操作
a.get请求调用,传递api的参数
除去登录以外,需要将业务参数和系统参数追加成一个urlEncode格式
get (url, params) {
var param;
//判断登录情况,此时若为登录不需要加密处理
if (url === "/login") {
param = params;
}else {
param = formateParm(params);
}
var urlencode = urlEncode(host + url,param);
return axios({
method: 'get',
url:urlencode,
timeout: 10000,
headers: {
'content-Type': 'application/json'
},
request: 'XMLHttpRequest',
}).then(
(response) => {
// console.log(response.status)
return checkStatus(response)
}
).then(
(res) => {
return checkCode(res)
}
)
}
格式化参数,在业务参数中追加系统参数,pin/时间戳/token值
通过SHA.js合成参数值
function formateParm(parm) {
var sign = "";
parm['pin'] = pin();
var timeStamp = new Date().getTime();
console.log(timeStamp);
parm['timeStamp'] = timeStamp;
var params = Object.keys(parm).sort();
for (var ki in params) {
sign += params[ki] + parm[params[ki]];
}
sign = sign + imToken();
console.log(SHA1(sign) + "--sha1")
parm["sign"] = SHA1(sign);
return parm
}
转码urlEncode格式
let urlEncode = (url, data) => {
if (typeof (url) === undefined || url === null || url === ''){
return ''
}else if (typeof (data) === undefined || data === null || typeof (data) !== 'object'){
return url
}else {
url += (url.indexOf('?') !== -1) ? '' : '?'
for (let k in data) {
url += ((url.indexOf('=') !== -1) ? '&' : '') + k + '=' + encodeURI(data[k])
}
return url
}
}
更多推荐
已为社区贡献21条内容
所有评论(0)