微信小程序开发之如何解决用户登录时session储存的问题

阿酷| 阅读:412 发表时间:2017-08-01 11:03:16 小程序开发

微信小程序开发中,由wx.request()发起的每次请求对于服务端来说都是不同的一次会话,即对应服务端不同的session,由于项目中使用session保存用户信息所以导致后续请求相当于未登录的情况。那么我们改如何解决用户登录时session储存的问题?

解决办法:1、在用户登录时,服务端将用户的sessionId返回;

2、小程序保存sessionId,在之后的每次请求中在请求头中携带sessionId。

javascript代码:

var Server = "http://www.XXXX.com/api/";//定义公用的api接口地址
function loginRequest({url, data, success, fail, complete, method = "POST"}) {
    var session_id = wx.getStorageSync('PHPSESSID');//本地取存储的sessionID
    if (session_id != "" && session_id != null) {//判断session_id,设置wx.request请求的header信息
        var header = { 'content-type': 'application/x-www-form-urlencoded', 'Cookie': 'PHPSESSID=' + session_id }
    } else {
        var header = { 'content-type': 'application/x-www-form-urlencoded' }
    }
    console.log(session_id);
    url = Server + url;//封装请求地址
    wx.request({
        url: url,
        method: method,
        data: data,
        header: header,
        success: res => {
            if (session_id == "" || session_id == null) {
                wx.setStorageSync('PHPSESSID', res.data.session_id) //如果本地没有就说明第一次请求 把返回的session id 存入本地
            }
            console.log(res);
            var data = res.data
            res['statusCode'] === 200 ? success(data) : fail(res)
        },
        fail: fail,
        complete: complete
    })
 
}
本文由阿酷发表并编辑,转载此文章须经作者同意,并请附上出处及本页链接。如有侵权,请联系本站删除。