小程序会话保持怎么实现?
小程序会话保持怎么实现?小程序的会话都是临时的,所以在下一次的会话又是没有记录的,那么如何保持会话呢?下面一起看看小程序会话保持怎么实现吧。
小程序会话保持怎么实现?
小程序的HTTP请求全部使用wx.request({})方法,但是该方法每次都会产生一个新的会话,因此在特定使用场景(安全验证、session保存、CSRF保护)等方面会遇到一些麻烦。比如csrf保护的应用中,即使上次拿到csrf,再下一次请求中又会失效。
解决方法
step 1: 获取sessionId以及csrf并保存
已获取csrf为例,简单粗暴,在应用启动时候()可以在onLaunch时候)获取第一次请求的Cookie信息,保存在本地,以后每次在请求头强制加上cookie信息即可。
小程序代码入下:
//app.js
App({
onLaunch:function(){
this.initSession();
},
initSession:function(){
var that = this;
// step one:get cookie
wx.request({
url:'my.domain/open-api/cookie',
header:{'Content-Type':'application/x--form-urlencoded'},
method:'GET',
success:function(res){
for(let cookie of res.data){
//这里我仅保存了sessionid,根据需要,也可以保存cookie的其它信息。
if(cookie.name === 'JSESSIONID') {
that.globalData.sessionId=cookie.value;
wx.request({
url:'my.domain/open-api/csrf',
header:{'Content-Type':'application/x--form-urlencoded','Cookie':'JSESSIONID='+that.globalData.sessionId},
method:'GET',
success:function(res){
that.globalData.csrf=res.data;
}
})
break;
}
}
}
})
}
})
step 2: 根据sessionId以及csrf请求别的小程序接口
以后,每次请求别的api接口,就可以在请求头中添加csrf以及sessionId来维持同一个会话了。
小程序代码如下:
doSth:function(){
var that = this;
wx.request({
url:'my.domain/api/some-thing',
//这里的CSRF的key(CSRF-TOKEN)具体写什么,根据各位自己的小程序设置来写
header:{'Content-Type':'application/x--form-urlencoded','Cookie':'JSESSIONID='+that.globalData.sessionId,'CSRF-TOKEN':that.globalData.csrf},
method:'POST',
data:paramdata,
success:function(res){
doSomething(res.data);
}
})
}
小程序会话保持怎么实现的问题很简单,只需要简单的两步就能解决问题,是不是超轻松呢,如果你还想了解更多小程序内容就请关注微小乔,感谢大家的关注。
相关推荐:
微信小程序客服会话功能怎么实现?
小程序会话管理是怎样的?
附近的小程序功能升级,非管理员也能登录小程序
上一篇:微信小程序首行缩进怎么实现?
下一篇:小程序会话管理是怎样的?