首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Keystonejs会话

Keystonejs会话
EN

Stack Overflow用户
提问于 2016-12-31 07:14:17
回答 3查看 1.7K关注 0票数 2

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

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

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

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

代码语言:javascript
复制
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);//

对用户进行授权。

问候

EN

回答 3

Stack Overflow用户

发布于 2017-01-01 12:38:57

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

票数 2
EN

Stack Overflow用户

发布于 2018-11-18 19:59:09

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

我稍微深入研究了一下,发现在keystone.session中的req.session.reganete()清理上一次会话,keystone中的代码看起来都很好。

我最终将匿名用户购物车作为对象放入其中,并在keystone.signin成功回调时将该对象重新分配回req.session.cart

在帖子之后更新

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

请参阅此处的讨论:Request: Option for refreshing the session ID

代码语言:javascript
复制
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.
// ...
票数 1
EN

Stack Overflow用户

发布于 2021-09-08 21:13:14

我不认为你可以在会话中设置它。它只适用于用户。

相反,我会在购物车列表上有一个isDraft字段,并保存每次产品更改的购物车。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41403867

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档