【问题标题】:Keystonejs sessionKeystonejs 会话
【发布时间】:2017-05-15 04:55:30
【问题描述】:

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

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

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

我已写信req.session.cart 将产品添加到会话中 并使用

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);//

授权用户。

问候

【问题讨论】:

    标签: session keystonejs


    【解决方案1】:

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

    【讨论】:

    • 我正在使用 connect-mongo 将会话持久化到 mongodb 并使用 keystone.session.signin 为用户签名。我注意到,当用户登录时,当前会话被删除并替换为带有用户 ID 的新会话,如上所述。
    【解决方案2】:

    我想知道这个问题有什么更新吗?

    我挖掘得更深一点,发现req.session.reganete() 中的keystone.session 清理了上一个会话,keystone 中的代码看起来都很好。

    我最终将匿名用户 Cart 作为对象放入并在 keystone.signin 成功回调中将对象重新分配回 req.session.cart


    [发帖后更新]

    当新的会话 ID 发出时,会话库将清除会话。

    在此处查看讨论:Request: Option for refreshing the session ID

    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.
    // ...
    

    【讨论】:

      【解决方案3】:

      我认为你不能在会话中设置它。它仅供用户使用。

      相反,我会在购物车列表中添加一个 isDraft 字段,并在每次更改产品时保存购物车。

      【讨论】:

        猜你喜欢
        • 2021-05-03
        • 2021-12-29
        • 2014-12-21
        • 2017-03-27
        • 2015-05-28
        • 2018-05-20
        • 1970-01-01
        • 2023-03-04
        • 2015-02-01
        相关资源
        最近更新 更多