在SessionStore中设置Node.js Express会话过期时间而不是cookie

Express 会话过期时所能find的一切就是设置cookie。

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

但是cookies的过期date并不是用你的secret “保护”的,因为这些只是你的浏览器pipe理的cookie设置。

如何在会话存储中设置会话的过期date? 因为从理论上讲,当有人使用你的计算机时,如果服务器端会话也不是与cookie同时过期,他们可以“修复”过期的cookie的到期时间并继续会话。

我无法find任何有关如何工作,或如何设置/改变这一点。

使用会话中间件,只有encryption的会话ID存储在客户端Cookie中。 过期date作为req.session.cookie.expires存储在服务器端存储中。 所以我们可以添加一个自定义中间来检查当前会话是否过期。

 // ... 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(); }); // ... 

我今天写了解决scheme,因为项目需要。

这里是:

https://github.com/expressjs/session/issues/173

那里有指示。