【问题标题】:How can I have an Express/Connect route that doesn't update session如何拥有不更新会话的 Express/Connect 路由
【发布时间】:2012-09-29 00:56:35
【问题描述】:

我正在构建一个在后端与 Express 对话的单页 javascript 应用程序。在应用程序的各个点,我们与后端交互,更新会话。出于安全原因,会话到期时间相对较短。

在其中,我想警告用户会话可能会过期,如果他们已经闲置很长时间并且没有与后端进行任何交易。

我想要一个 Express“心跳”路由来返回会话剩余的时间 (session.maxAge),但我不希望它刷新会话过期时间。

connect.session 代码在请求结束时自动刷新会话。

我正在寻找一种方法来访问会话以获取 maxAge,但没有更新它。

【问题讨论】:

  • 您考虑过使用socket.io 吗?
  • 嘿,这实际上是我正在使用的。但是,socket.io + cluster + redisstore + xhr_polling = 完全失败(github.com/LearnBoost/socket.io/issues/939)。所以,我正在寻找一个老派的解决方法。此外 - 通过 socket.io 触摸会话不会更新 cookie 上的过期时间 - 因此 redis/cookie 过期时间会变得不同,直到发出真正的请求。

标签: node.js express connect


【解决方案1】:

最好的办法是手动修改您的 SessionStore,以便在来自特定路由 (req.url) 时不修改会话过期时间。

查找调用 Session.touch() 的 sessionStore 部分。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-07
    • 1970-01-01
    • 1970-01-01
    • 2014-04-11
    • 2012-09-09
    • 2020-06-17
    • 1970-01-01
    • 2020-08-22
    相关资源
    最近更新 更多