微信小程序 保持登录状态(自己服务端的session)的解决方案(java)
2018-02-25 21:16
483 查看
问题:由于wx.request()发起的每次请求对于服务器来说都是不同的会话(wx.request()请求是先经过微信服务器再到达我们的服务器),这样导致后续请求都相当于未登录的状态。
解决方案:
session信息存放在cookie中以请求头的方式带回给服务端
JSESSIONID=***;
小程序有提供对请求头的支持
流程:
1、在用户登录时,服务器将会话sessionId返回到客户端(小程序)
HttpSession session = request.getSession();
Sting sessionId = session.getId();2、小程序保存session到storage(全局变量app.js),在之后的每一次请求中都携带请求头sessionId/*保存到storage*/
wx.setStorage({
key: 'sessionId',
data: 'JSESSIONID='+res.data.sessionId,
success: function (res) {
console.log(res)
}
})
/*保存到app.js*/
App({
onLaunch: function () {
},
globalData: {
header: { 'Cookie': 'JSESSION=***' }
}
})
getApp().globalData.header.Cookie = 'JSESSIONID=' + sessionId;/*服务端返回的消息*/请求中带上请求头:sessionIdvar header = getApp().globalData.header; //获取app.js中的请求头
wx.request({
url: "****",
header: header, //请求时带上这个请求头
success:function(res){
}
})
//获取storage中的请求头
getCheckLoginFlag:function(){
var loginFlag = wx.getStorageSync('loginFlag')
var sessionId = wx.getStorageSync('sessionId')
if (typeof (loginFlag)!="undefined"){
wx.request({
url: '***',
data: {
loginFlag: loginFlag
},
header: {
'content-type': 'application/json',
'Cookie': sessionId
},
success: function (res) {
console.log(res)
}
})
}
}
解决方案:
session信息存放在cookie中以请求头的方式带回给服务端
JSESSIONID=***;
小程序有提供对请求头的支持
流程:
1、在用户登录时,服务器将会话sessionId返回到客户端(小程序)
HttpSession session = request.getSession();
Sting sessionId = session.getId();2、小程序保存session到storage(全局变量app.js),在之后的每一次请求中都携带请求头sessionId/*保存到storage*/
wx.setStorage({
key: 'sessionId',
data: 'JSESSIONID='+res.data.sessionId,
success: function (res) {
console.log(res)
}
})
/*保存到app.js*/
App({
onLaunch: function () {
},
globalData: {
header: { 'Cookie': 'JSESSION=***' }
}
})
getApp().globalData.header.Cookie = 'JSESSIONID=' + sessionId;/*服务端返回的消息*/请求中带上请求头:sessionIdvar header = getApp().globalData.header; //获取app.js中的请求头
wx.request({
url: "****",
header: header, //请求时带上这个请求头
success:function(res){
}
})
//获取storage中的请求头
getCheckLoginFlag:function(){
var loginFlag = wx.getStorageSync('loginFlag')
var sessionId = wx.getStorageSync('sessionId')
if (typeof (loginFlag)!="undefined"){
wx.request({
url: '***',
data: {
loginFlag: loginFlag
},
header: {
'content-type': 'application/json',
'Cookie': sessionId
},
success: function (res) {
console.log(res)
}
})
}
}
相关文章推荐
- android学习笔记之客户端与服务端保持session登录状态
- JavaWeb登录状态保持解决方案
- 微信小程序----------保持登录状态访问后台数据
- java实现微信小程序第三方登录-保存用户至自己的服务器
- 微信小程序Java登录流程(ssm实现具体功能和加解密隐私信息问题解决方案)
- 微信小程序Java登录流程(ssm实现具体功能和加解密隐私信息问题解决方案)
- 微信小程序登录状态
- Session保持登录状态及Session的理解
- 微信小程序开发之用户系统 一键登录 获取session_key和openid
- 微信小程序开发之用户系统 一键登录 获取session_key和openid
- 微信小程序开发记账应用实战服务端之用户注册与登录-基于Yii2描述
- Android WebView 与登录状态保持一致,建立SESSION会话
- 微信小程序 获取用户信息并保存登录状态
- 微信小程序登录数据解密以及状态维持
- 小程序微信登录+服务端
- 利用JSPsession对象保持住登录状态
- session--保持登录20分钟,常用与用户登录状态
- Android用WebView获取sessionid保持登录状态
- [转]微信小程序登录数据解密以及状态维持
- java实现自动登录无验证码登录后台并保持会话状态持续监控固定页面信息。