Session Keystonejs会话

Session Keystonejs会话,session,keystonejs,keystone,Session,Keystonejs,Keystone,我需要一些关于keystonejs会话的帮助。我正在使用购物车,因此,当客户将产品添加到购物车后,他们会进入一个签出页面,强制他们以用户身份登录。但是,当他们登录时,会话将重新启动并清除购物车的内容 我的问题:有没有办法登录并保留现有会话,然后将用户id添加到会话中 我正在使用connect mongo将会话持久化到mongodb 我已经编写了req.session.cart将产品添加到会话中 和使用 授权用户 就我所知,用户使用Keystone登录到请求对象,并将用户的MongoDB id添加

我需要一些关于keystonejs会话的帮助。我正在使用购物车,因此,当客户将产品添加到购物车后,他们会进入一个签出页面,强制他们以用户身份登录。但是,当他们登录时,会话将重新启动并清除购物车的内容

我的问题:有没有办法登录并保留现有会话,然后将用户id添加到会话中


我正在使用connect mongo将会话持久化到mongodb

我已经编写了
req.session.cart
将产品添加到会话中 和使用

授权用户


就我所知,用户使用Keystone登录到请求对象,并将用户的MongoDB id添加到
req.session.userId
。它不会清除现有会话。您目前如何添加到Keystone会话中?

我想知道这个问题是否有更新

我深入挖掘了一下,发现在
keystone.session
中的
req.session.reganate()
清理上一个会话,keystone中的代码看起来都很好

最后,我将匿名用户购物车作为一个对象放入,并在
keystone.sign
success回调中将该对象重新分配回
req.session.Cart


[发帖后更新]

当新会话ID出现问题时,会话库将清除会话

请参见此处的讨论:


我正在使用connect mongo将会话持久化到mongodb,并使用
keystone.session.signin
对用户进行签名。我注意到,当用户在当前会话中签名时,将被删除,并替换为具有userid的新会话,如上所述。
view.on('post', { action: 'login' }, function (next) {

    if (!req.body.email || !req.body.password) {
        req.flash('error', { detail: 'Please enter your email and password.' });
        return next();
    }

    var onSuccess = function() {
        req.flash('success', { detail: 'Great you are now logged in!' });
        res.redirect('/checkout');//redirect on success
    }

    var onFail = function() {
        req.flash('error', { detail: 'Input credentials were incorrect, please try again.' });
        return next();
    }

    keystone.session.signin({ email: req.body.email, password: req.body.password }, req, res, onSuccess, onFail);//
const currentSession = {}
// 1. have a copy of current session
Object.assign(currentSession, req.session) 
// 2. merge the copied session to new session after keystone signin method.
// ...