在 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 与 CookieStore 的会话

使用 Python 读取火狐的 cookies

会话 cookie 在 Postman 中成功运行,而不是 Chrome

python 将Firefox sessionstore.js文件转换为html。

SwiftUI 线程 1:致命错误:未找到类型为 SessionStore 的 ObservableObject

在启用 SSL 的站点上使用 JWT 而不是 Cookie