Próbuję zaimplementować funkcję "zapamiętaj mnie" dla mojego formularza logowania. Jak robi to większość witryn? Zakładam, że większość witryn dynamicznie zmienia datę ważności pliku cookie sesji lub pole wieku, gdy pole wyboru jest zaznaczone.Jak dynamicznie ustawiać wygasanie pliku cookie sesji/maxAge w Express/Node.js?
Jak zatem zmienić okres ważności pliku cookie w zależności od tego, czy zaznaczone jest pole wyboru Zapamiętaj mnie?
Do tej pory mam:
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)
To działa. Ale nie mogę wybrać ani, aby mnie zapamiętać; z jakiegoś powodu ciasteczko trwa wiecznie. Nawet po usunięciu pliku cookie (w chrome) i zalogowaniu się bez sprawdzania pola "Remember Me", to nadal trwa, gdy zamykam sesję przeglądarki, mimo że w panelu ciasteczek w inspektorze sieciowym jest napisane, że jest to sesja, a konsola.log podaje ja "fałszywy, fałszywy".
Oczywiście robię coś nie tak. Jak zrobić to dobrze?
Z góry dzięki! :)
Edytuj
Wygląda na to, że powyższy kod działa. Powodem, dla którego wydawało się, że nie działa, było to, że miałem możliwość ponownego otwarcia kart przeglądarki po ponownym uruchomieniu Chrome. Powoduje to, że Chrome nigdy nie usuwa plików cookie z sesji przeglądarki i zmusił mnie do stwierdzenia, że ustawienie daty wygaśnięcia pliku cookie na wartość false nie spowodowało, że są one plikami cookie sesji przeglądarki.
Zamiast ustawiać je na fałszywe? – Sam
Yah, ciasteczko wygasa ma być datą, a maxAge liczbą. – yuxhuang
Okazuje się, że plik cookie wygaśnie natychmiast. Nie tego chcę. Chcę, aby plik cookie wygasał zaraz po zakończeniu sesji przeglądarki. Co mam ustawić w tym polu? – Sam