本发明涉及微信小程序平台技术领域,特别涉及一种基于微信小程序与服务器之间通过不断地变换验证码来实现安全通信的方法
背景技术:
在微信小程序对服务器发起网络请求时,如果没有验证信息或者验证信息固定、不变化,请求的内容就容易被别有用心的人记住或猜解,这样很容易造成机密数据的泄露,服务器被恶意的攻击,给公司带来不可预知的损失;为了解决这些问题,需要实现一种安全的通信方式。
技术实现要素:
本发明解决的技术问题在于提供一种基于微信小程序与服务器之间通过不断地变换验证码来实现安全通信的方法;解决了基于微信小程序与服务器之间通信不安全的问题。
本发明解决上述技术问题的技术方案是:
对小程序里网络请求方法进行二次封装生成新的方法。在新方法体内创建data对像,先添加请求需要的一些基本数据;然后使用wx.login方法发起请求,把返回后的js_code数据添加到data中;最后将data做为参数,使用wx.request方法再次发起请求。服务器端接收到请求的信息,通过微信端提供的接口对数据进行验证,如果返回码为200,说明请求安全,验证通过,即可进行下一步操作。从而解决了基于微信小程序与服务器之间通信不安全的问题。
所述的方法具体包括如下步骤:
步骤一、在微信平台上注册,获得appid与secret;
步骤二、在微信开发工具里创建httpUtil工具类;
步骤三、在工具类里创建方法httpPost方法,参数有url及basicData等;
步骤四、在方法体内创建data对象,把appid及secret设值到data中,通过遍历的方式把basicData也合并到data中;
步骤五、使用wx.login方法请求微信服务器,把返回后的js_code数据添加到data中;
步骤六、将data做为参数,url做为请求地址,使用wx.request方法对公司服务器发起请求;
步骤七、服务器端接收到微信请求的数据,根据微信提供的接口进行验证,如果返回的statusCode等于200,表示安全,请求通过,即可下一步操作;否则返回错误提示信息,结束请求。
本发明的有益效果:对小程序里网络请求方法进行二次封装生成新的方法。在新方法体内创建data对像,先添加请求需要的一些基本数据;然后使用wx.login方法发起请求,把返回后的js_code数据添加到data中;最后将data做为参数,使用wx.request方法再次发起请求。服务器端接收到请求的信息,通过微信端提供的接口对数据进行验证,如果返回码为200,说明请求安全,验证通过,即可进行下一步操作,从而达到在服务器端收到小程序每次发来的请求都是安全的目的。有效解决了基于微信小程序与服务器之间通信不安全的问题。
附图说明
下面结合附图对本发明进一步说明:
图1为本发明的流程图。
具体实施方式
如图1所示,本发明采用如下步骤:
步骤一、在微信平台上注册,获得appid与secret;
步骤二、在微信开发工具里创建httpUtil工具类;
步骤三、在工具类里创建方法httpPost方法,参数有url及basicData等;如:
//创建方法
function httpPost(url, basicData, that){
}
步骤四、在方法体内创建data对像,把appid及secret设值到data中,通过遍历的方式把basicData也合并到data中;如:
function httpPost(url, basicData, that){
var basicData = {
appid: api.appid,
secret: api.secret,
grant_type: 'authorization_code'
}
if (!basicData) {
for (var key in basicData) {
try {
data[key] = basicData [key];
} catch (e) { }
}
}
//进行五、六步操作
……
}
步骤五、使用wx.login方法请求微信服务器,把返回后的js_code数据添加到data中;如:
wx.login({
success: function (res) {
if (res.code) {
data.js_code = res.code;
}
}
});
步骤六、将data做为参数,url做为请求地址,使用wx.request方法对公司服务器发起请求。如:
wx.request({
url: url,
header: { 'content-type': 'application/x-www-form-urlencoded' },
method: 'POST',
data: data,
success: (res) => {
wx.showModal({
title: '提示',
content: res.data.msg,
showCancel: false
})
},
fail: (err) => {
wx.showModal({
title: '提示',
content: res.data.msg,
showCancel: false
})
}
});
步骤七、服务器端接收到微信请求的数据,根据微信提供的接口进行验证,如果返回的statusCode等于200,表示安全,请求通过,即可下一步操作;否则返回错误提示信息,结束请求。如:
String url = “https://api.weixin.qq.com/sns/jscode2session”;
@RequestMapping("/getWX.action")
@ResponseBody
public JsonInfo getWX (@RequestBody WXInfo wxInfo) {
if(wxInfo != null && StringUtil.isNotEmpty(wxInfo.appid)) {
Map<String,Object> map = new HashMap<String,Object>();
map.put(appid, wxInfo.getAppid());
map.put(secret, wxInfo.getSecret());
map.put(js_code, wxInfo.getJs_code());
……
String jsonStr = httpUtil.post(url,map);
JSONObject jsonobject = JSONObject.fromObject(jsonStr);
if(jsonobject.get(“statusCode”) == 200){
//此处进行增册改查等操作
……
return JsonInfoUtil.succ(“操作成功”);
}else{
return JsonInfoUtil.error(“请求失败”);
}
}。