入门客AI创业平台(我带你入门,你带我飞行)
博文笔记

微信小程序 保持登录状态(自己服务端的session)的解决方案(java)

创建时间:2018-02-25 投稿人: 浏览次数:1613

问题:由于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;/*服务端返回的消息*/

请求中带上请求头:sessionId

var 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)
        }
      })
    }
  }


声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。
  • 上一篇:没有了
  • 下一篇:没有了
未上传头像