我正在嘗試爲我的登錄表單實現「記住我」功能。大多數網站如何做到這一點?我假設當複選框被選中時,大多數網站會動態改變會話cookie的過期或最大年齡字段。如何在Express/Node.js中動態設置會話cookie的expires/maxAge?
那麼,如何根據是否選中記住我複選框來更改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(以鉻形式)並且未使用記住我字段進行登錄時,即使在關閉瀏覽器的會話時,它仍然會持續運行,即使它在Web檢查器的Cookie面板中顯示它是Session並且console.log正在提供我'虛假,虛假'。
我明顯在做錯事。我該如何做對?
在此先感謝! :)
編輯
看起來像上面的代碼工作,實際上。它看起來好像沒有起作用的原因是因爲我可以選擇在重新啓動Chrome時重新打開瀏覽器選項卡。這會導致Chrome永遠不會刪除瀏覽器會話Cookie,並且讓我認爲將Cookie的過期設置爲false並不會讓他們成爲瀏覽器會話Cookie。
而不是將它們設置爲false的? – Sam
是的,cookie的過期應該是一個日期,並且maxAge是一個數字。 – yuxhuang
原來,這使cookie立即過期。這不是我想要的。我希望cookie在瀏覽器會話結束後儘快過期。我爲什麼要設置這些字段? – Sam