我试图实现一个"记住我"我的登录表单的功能。大多数网站如何做到这一点?我假设大多数网站在选中复选框后动态更改会话Cookie的过期或最大年龄字段。
那么,如何根据是否选中了“记住我”复选框来更改cookie应该动态持续多长时间?
到目前为止,我有:
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)
这很有效。但我不能选择不来纪念我;由于某种原因,cookie永远存在。即使我删除了cookie(在chrome中)并且在没有记住我的字段的情况下登录,它仍然会在我关闭浏览器会话时持续,即使它在网络检查员的cookies面板中说它是Session和console.log给了我'假,假'。
我显然做错了什么。我该怎么做?
提前致谢! :)
实际上看起来上面的代码是有效的。它看起来好像不起作用的原因是因为我可以选择在重新启动Chrome时重新打开浏览器标签。这会导致Chrome永远不会删除浏览器会话Cookie,并让我认为将Cookie的到期时间设置为false并不能使它们成为浏览器会话Cookie。
答案 0 :(得分:3)
根据HTTP cookie's Expires and Max-Age directives,Cookie的expires
日期可以设置为纪元时间(或早于现在的日期),maxAge设置为0:
req.session.cookie.expires = new Date(0);
req.session.cookie.maxAge = 0;