2013-07-17 8 views
5

Ich versuche, eine "Remember me" -Funktion für mein Login-Formular zu implementieren. Wie machen die meisten Websites das? Ich gehe davon aus, dass die meisten Websites das Ablauf- oder Höchstalterungsfeld des Sitzungscookies dynamisch ändern, wenn das Kontrollkästchen aktiviert ist.Wie setze ich die expires/maxAge des Session-Cookies dynamisch in Express/Node.js?

Also, wie ändere ich, wie lange der Cookie dynamisch dauern soll, abhängig davon, ob das Kontrollkästchen Remember Me ausgewählt ist?

Bisher habe ich:

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) 

Dies funktioniert. Aber ich kann nicht nicht wählen, um mich zu erinnern; Aus irgendeinem Grund hält der Cookie für immer. Auch wenn ich den Cookie (in Chrome) lösche und mich ohne das Feld remember me einchecke, dauert es immer noch, wenn ich die Sitzung meines Browsers schließe, obwohl im Cookie-Panel im Web Inspector steht, dass es Session ist und die console.log gibt ich 'falsch, falsch'.

Ich mache offensichtlich etwas falsch. Wie mache ich es richtig?

Vielen Dank im Voraus! :)

bearbeiten

Sieht aus wie der obige Code arbeitet, eigentlich. Der Grund, warum es so aussah, als ob es nicht funktionierte, war, dass ich beim Neustart von Chrome die Browser-Tabs wieder öffnen konnte. Dies führt dazu, dass Chrome niemals Browsersitzungscookies löscht und dass ich denke, dass das Setzen des Cookie-Ablaufs auf "False" nicht zu Browsersitzungscookies führt.

Antwort

3

Nach HTTP cookie's Expires and Max-Age directives, der expires Datum des Cookies kann auf die Epoche Zeit eingestellt wird (oder ein Datum früher als jetzt) ​​und maxAge zum 0:

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

Anstatt sie auf false setzen? – Sam

+0

Yah, der Ablauf des Cookies ist ein Datum und maxAge eine Zahl. – yuxhuang

+1

Es stellt sich heraus, dass der Cookie sofort abläuft. Das ist nicht was ich will. Ich möchte, dass der Cookie abläuft, sobald die Browsersitzung beendet wird. Wofür setze ich die Felder, um das zu tun? – Sam

Verwandte Themen