2013-07-17 12 views
5

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.

Odpowiedz

3

Według HTTP cookie's Expires and Max-Age directives, plik cookie jest expires data może być ustawiony do czasu epoki (lub daty wcześniejszej niż teraz) i maxAge do 0:

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

Zamiast ustawiać je na fałszywe? – Sam

+0

Yah, ciasteczko wygasa ma być datą, a maxAge liczbą. – yuxhuang

+1

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

Powiązane problemy