2014-03-12 5 views
11

Alles, was ich auf Express Session s ablaufenden Zeiten finden kann, ist über das Setzen des Cookies.Einstellung Node.js Express Sitzung Ablaufzeit in SessionStore anstelle von Cookie

session.cookie.expires = null; // Browser session cookie 
session.cookie.expires = 7 * 24 * 3600 * 1000; // Week long cookie 

Aber das Ablaufdatum der Cookies nicht ‚gesichert‘ mit Ihrem secret, da diese nur die Cookie-Einstellungen Ihres Browsers verwaltet.

Wie kann ich das Ablaufdatum der Sitzung im Sitzungsspeicher festlegen? Denn theoretisch, wenn jemand Ihren Computer benutzt, können Sie die Ablaufzeit eines abgelaufenen Cookies 'reparieren' und die Sitzung fortsetzen, wenn die serverseitige Sitzung nicht gleichzeitig mit dem Cookie abgelaufen ist.

Ich kann nichts darüber finden, wie das funktioniert oder wie man das einstellt/ändert.

+0

Siehe die Antwort unten für die echte Lösung für Express-Sitzung Timeout – asdfasdfads

Antwort

16

Bei der Session-Middleware wird nur die verschlüsselte Sitzungs-ID im clientseitigen Cookie gespeichert. Das abgelaufene Datum wird im Serverspeicher als req.session.cookie.expires gespeichert. So können wir eine benutzerdefinierte Mitte hinzufügen, um zu überprüfen, ob die aktuelle Sitzung abgelaufen ist.

// ... 
app.use(express.cookieParser()); 
app.use(express.session({secret:'yoursecret', cookie:{maxAge:6000}})); 

app.use(function(req, res, next) { 
    // if now() is after `req.session.cookie.expires` 
    // regenerate the session 
    next(); 
}); 

// ... 
+0

Siehe die Antwort unten für die echte Lösung für Express Session Timeout – asdfasdfads