如何在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的expires
date可以被设置为纪元时间(或者比现在更早的date)并且maxAge为0:
req.session.cookie.expires = new Date(0); req.session.cookie.maxAge = 0;