sails.js 会话 - 记住我的功能

sails.js Sessions - rememberme functionality

我一直在尝试使用 sails 实现记住我的功能。我希望 session 在浏览器关闭之前一直存在。但是,如果在用户登录时勾选了 rememberme 复选框,我希望 session 持续 30 天。我从这里使用了记住我的护照策略: https://github.com/jaredhanson/passport-remember-me 但它最终坐在帆的顶部 session 而被称为第一个的那个最终取代了另一个。

基本上可以自己设置cookie,手动设置expires

    res.cookie('userSession', {
        items: [1, 2, 3]
    }, {
        expires: new Date(Date.now() + 365 * 24 * 60 * 60 * 1000),
        httpOnly: true
    })

您可以在调用登录函数之前设置 cookie 年龄。

我在我的登录控制器中完成了 -> passport.callback。

passport.callback(req, res, function (err, user, challenges, statuses) {
        ...

        if (req.param('remember', false) == true) {
            req.session.cookie.maxAge = 1000 * 60 * 60 * 24 * 30;
        }
        req.login(user, function (err) {
        ...
        }
} 

这感觉不太对,如果您在登录时发送一些其他 cookie,也会影响它们的生命周期。

但它确实有效,我也接受了它,因为查找 sails-related 的文档就像挖油一样。

此外,我注意到 Passport 没有正确销毁会话,必须通过在注销控制器中调用 req.session.destroy(); 手动完成。