DBMNG数据库管理与应用

所有存在都是独创。
当前位置:首页 > 移动应用 > 微信开发

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

问题:由于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)

        }

      })

    }

  }

本站文章内容,部分来自于互联网,若侵犯了您的权益,请致邮件chuanghui423#sohu.com(请将#换为@)联系,我们会尽快核实后删除。
Copyright © 2006-2023 DBMNG.COM All Rights Reserved. Powered by DEVSOARTECH            豫ICP备11002312号-2

豫公网安备 41010502002439号