在 SessionStore 而不是 cookie 中设置 Node.js Express 会话过期时间
Posted
技术标签:
【中文标题】在 SessionStore 而不是 cookie 中设置 Node.js Express 会话过期时间【英文标题】:Setting Node.js Express session expiration time in SessionStore in stead of in cookie 【发布时间】:2014-04-16 17:37:08 【问题描述】:我可以在 Express Sessions 的过期时间上找到的所有内容都是关于设置 cookie。
session.cookie.expires = null; // Browser session cookie
session.cookie.expires = 7 * 24 * 3600 * 1000; // Week long cookie
但是您的secret
并不“确保”cookie 的到期日期,因为这些只是您的浏览器管理的 cookie 设置。
如何在会话存储中设置会话的过期日期?因为理论上,当有人使用您的计算机时,如果服务器端会话没有与 cookie 同时过期,他们可以“修复”过期 cookie 的过期时间并继续会话。
我找不到任何关于它如何工作或如何设置/更改它的信息。
【问题讨论】:
快速会话超时的真正解决方案见下面的答案 【参考方案1】:使用 Session 中间件,只有加密的会话 ID 存储在客户端 cookie 中。过期日期在服务器端存储中存储为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();
);
// ...
【讨论】:
【参考方案2】:我今天根据项目需要编写了解决方案。
这里是:
https://github.com/expressjs/session/issues/173
那里有说明。
【讨论】:
始终将最相关的部分复制到答案中,这样即使您的链接失效,仍然有人可以解决他们的问题。 Your answer is in another castle以上是关于在 SessionStore 而不是 cookie 中设置 Node.js Express 会话过期时间的主要内容,如果未能解决你的问题,请参考以下文章
会话 cookie 在 Postman 中成功运行,而不是 Chrome
python 将Firefox sessionstore.js文件转换为html。