express作为小程序后台,session的问题

后台服务器伪代码

module.exports = {
    // 获取第三方sessionKey
    get3dSession: function(req, res) {
        // 通过appid, appsecret, 以及code换取session_key以及openid
        request('url', function(err, res, body) {
            // 获取session_key以及openid成功
            var sessionValue = body.session_key + body.openid;
            
            // 生成3d_session
            var sessionKey = function() {
                    return randValue;
                }
            // 以3d_session为key, session_key和openid为value,写入session
            req.session[sessionKey] = sessionValue;

            // 将3d_session发送给小程序
            res.send(sessionKey);
        })


    },
    // 通过第三方sessionKey获取openID以及sessionKey
    getOpenID: function(req, res) {
        var sessionKey = req.cookies.sessionKey;

        if (req.session.sessionKey) {
            console.log("有对应的值");
        } else {
            console.log("没有对应的值");
        }
    },
};

小程序 onload的时候执行下面的动作

// 将sessionKey保存到Storage
    saveSessionKey: function (cb) {
        wx.getStorage({
            key: "sessionKey",
            success: function (res) {
                console.log("已经存在sessionKey");
            },
            fail: function () {
                wx.login({
                    success: function (res) {
                        if (res.code) {
                            wx.request({
                                url: 'http://localhost:1337/onLogin/get3dSession',
                                data: {
                                    code: res.code
                                },
                                success: function (res) {
                                    // 将abzSessionKey保存在Storage
                                    wx.setStorage({
                                        key: 'sessionKey',
                                        data: res.data,
                                        success: function () {
                                            console.log('sessionKey存放成功');
                                        }
                                    })
                                }
                            })
                        }
                    }
                })
            }
        })

    },
    getOpenID: function (cb) {
        wx.getStorage({
            key: "sessionKey",
            success: function (res) {
                wx.request({
                    url: config.HTTP_BASE_URL+'/onLogin/getOpenID',
                    header:{ 
                        'cookie': 'sessionKey='+res.data
                    },
                    success: function(res){
                        console.log(res.data);
                    }
                })
            },
            fail: function () {
                console.log("没有sessionKey");
            }
        })
    },

小程序第一次载入的时候,会保存新的sessionKey到session Storage,这很正常
图片描述

可是重新编译后,根据代码是要在session Storage中查找对应的值,但是显示如下:
图片描述
生成了新的session记录,都是空的,在这些空的记录中肯定就获得不了值了。

图片描述

这是为什么?

阅读 4.9k
1 个回答
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏