如何在Express / Node.js中dynamic设置会话cookie的expires / maxAge?

我试图为我的login表单实现“记住我”function。 大多数网站如何做到这一点? 我假设当checkbox被选中时,大多数网站会dynamic改变会话cookie的过期或最大年龄字段。

那么,如何根据是否选中记住我checkbox来更改Cookie应该dynamic保存多久?

到目前为止我有:

if (req.body.remember) { var thirtyDays = 30*24*60*60*1000; req.session.cookie.expires = new Date(Date.now() + thirtyDays); req.session.cookie.maxAge = thirtyDays; } else { req.session.cookie.expires = false; req.session.cookie.maxAge = false; } console.log(req.session.cookie.expires, req.session.cookie.maxAge) 

这工作。 但我不能select记得我; 由于某种原因,cookie永远持续下去。 即使我删除了cookie(在chrome中)并且login时没有记住我的字段,但是当我closures浏览器的会话时,即使它在web检查器的cookie面板中显示它是Session和console.log,我“假,假”。

我显然做错了什么。 我该怎么做对不对?

提前致谢! 🙂

编辑

看起来像上面的代码正在工作,实际上。 之所以出现好像没有工作的原因是因为我有重新启动Chrome时重新打开浏览器标签的选项。 这导致Chrome永远不会删除浏览器会话cookie,并且让我觉得将cookie的过期设置为false并不会让他们成为浏览器会话cookie。

根据HTTP cookie的Expires和Max-Age指令 ,cookie的expiresdate可以被设置为纪元时间(或者比现在更早的date)并且maxAge为0:

 req.session.cookie.expires = new Date(0); req.session.cookie.maxAge = 0;