【问题标题】:How do I know when a session has expired?我如何知道会话何时过期?
【发布时间】:2017-04-19 02:00:06
【问题描述】:

我正在学习在 Express 中使用 Node.js 中的“client-sessions”包。一切似乎都运行良好。但我想知道,如果会话过期,有没有办法让它调用函数?

我正在设置,以便会话只存储一个唯一的 ID。然后在会话之外,我存储所有用户数据和我需要的任何其他内容。这样一来,我的 cookie 和会话信息就会非常小。但我想知道会话何时过期,以便在会话结束后清除任何不需要保留的信息。

但我无法找到有关如何执行此操作的任何详细信息。我是否以错误的方式思考这个问题?如果我将所有内容都存储在会话中,它会尝试将所有内容都存储在 cookie 中,不是吗?

提前致谢。

【问题讨论】:

  • 只需将数据存储在会话对象本身中,一切都会为您处理。如果您使用的是像样的会话管理器,则 cookie 仅带有会话 ID,会话对象本身是服务器端的。
  • @jfriend00 - 刚刚对其进行了测试,将一些信息保存到会话中,cookie 从 183B 变为 10KB。我认为它将会话中的所有内容保存到cookie中。我现在正在使用client-sessions。你会建议我找一个更好的会话管理器吗?
  • Express-session 不会那样做。
  • 酷!这对我来说似乎工作得很好。那么没有简单的方法来检查会话的状态吗?例如:查看用户是否仍然有活动会话(没有用户实际与服务器进行任何联系)?

标签: node.js express cookies session-cookies


【解决方案1】:

让我的 cmets 成为答案,因为它似乎帮助您解决了您的问题...

如果您使用像 express-session 这样的会话管理器,它只在浏览器 cookie 中存储会话 ID 并在会话存储中保留会话对象服务器端,那么您可以直接将数据存储在会话对象中,并且何时会话到期,会话管理器只会自动清理会话(包括会话中的数据)。然后,您不必担心它何时过期,因为事情会自动为您管理。

express-session 能够在会话store.get(sessionID, callback) 中查找给定会话,其中store 是您正在使用的会话存储对象。要使用它,您需要事先保存要查找的给定用户的 sessionID。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-05-06
    • 2010-11-05
    • 1970-01-01
    • 2012-01-31
    • 2018-10-12
    • 2013-02-09
    • 2013-07-23
    • 1970-01-01
    相关资源
    最近更新 更多