passport.js:记住我没有在快递应用程序中工作

时间:2016-05-13 07:41:18

标签: node.js express passport.js

我已在我的申请中实施了护照本地策略。现在我要实现记住我的功能:

app.use(passport.initialize());
app.use(passport.session());

app.post("/login", function (req, res, next) {
    var authFunction = passport.authenticate("local", function (err, user, info) {
        if (err) {
            next(err);
        } else {
            req.logIn(user, function (err) {
                if (err) {
                    next(err);
                } else {
                    if (req.body.remember) {
                        req.session.cookie.originalMaxAge = 2592000000;
                    } else {
                        req.session.cookie._expires = false;
                    }
                    res.redirect("/");
                }
            });
        }
    });
    authFunction(req, res, next);
});

如您所见,我设置了originalMaxAge,但当我再次关闭并再次打开浏览器时,它不起作用。
有什么想法吗?

1 个答案:

答案 0 :(得分:0)

来自Connect Documentation

  

<强>会话#饼干

     

每个会话都附带一个唯一的cookie对象。这允许   您可以更改每个访问者的会话cookie。例如,我们可以   将req.session.cookie.expires设置为false以启用cookie   仅保留用户代理的持续时间。

     

<强>会话#MAXAGE

     

或者req.session.cookie.maxAge将返回时间   以毫秒为单位,我们也可以重新分配一个新值   适当调整.expires属性。下列   基本上是等价的

根据这一点,您必须设置expiresmaxAge属性:

if (req.body.remember) {
    var oneHour = 3600000;
    req.session.cookie.expires = new Date(Date.now() + hour);
    req.session.cookie.maxAge = hour;
} else {
    req.session.cookie.expires = false;
}