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.
Anstatt sie auf false setzen? – Sam
Yah, der Ablauf des Cookies ist ein Datum und maxAge eine Zahl. – yuxhuang
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