我已在我的申请中实施了护照本地策略。现在我要实现记住我的功能:
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
,但当我再次关闭并再次打开浏览器时,它不起作用。
有什么想法吗?
答案 0 :(得分:0)
<强>会话#饼干强>
每个会话都附带一个唯一的cookie对象。这允许 您可以更改每个访问者的会话cookie。例如,我们可以 将req.session.cookie.expires设置为false以启用cookie 仅保留用户代理的持续时间。
<强>会话#MAXAGE 强>
或者req.session.cookie.maxAge将返回时间 以毫秒为单位,我们也可以重新分配一个新值 适当调整.expires属性。下列 基本上是等价的
根据这一点,您必须设置expires
和maxAge
属性:
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;
}