【问题标题】:Node session cookie that expires过期的节点会话 cookie
【发布时间】:2014-07-20 20:58:47
【问题描述】:

是否可以创建一个会话 cookie(浏览器关闭时自动删除的)并且还有一个过期时间,以便它在设定的时间后过期,比如说 15 分钟,除非用户继续使用该网站?如果他们使用该网站,我想重置过期时间,使其再持续 15 分钟。

我真的很幸运,要么创建一个在浏览器关闭时过期的会话 cookie,要么作为持久性 cookie 保留但使用 expires 或 maxAge 参数过期。

我唯一能想到的是创建一个会话cookie,其中存储了一个时间戳值,并在会话中间件中,检查当前时间>时间戳值,然后拒绝请求并通过设置删除cookie它为空。如果当前时间是

虽然我的想法可能会奏效,但它让我觉得有一种更正式的方式可以实现我想要的。

我目前正在尝试使用 node 和 express,因此任何为该构建量身定制的见解都将不胜感激。

【问题讨论】:

    标签: node.js session express


    【解决方案1】:

    因为您创建会话 cookie 的方式是忽略过期时间,所以您无法真正使用单个 cookie。

    但是,您可以使用两个 cookie、一个会话 cookie 和一个过期 cookie。以下是使用两个 cookie 执行此操作的一些逻辑:

    1. 创建一个随机数。
    2. 创建会话 cookie,例如 session=randomNumber
    3. 创建第二个 cookie expiry=randomNumber,在 15 分钟后过期。
    4. 让您的代码检查两个 cookie 是否存在并包含相同的随机数。

    如果浏览器关闭,会话 cookie 将被删除。 如果过了 15 分钟,第二个 cookie 将被删除。 如果浏览器关闭然后重新打开,则不会有会话 cookie,即使您再创建一个,第二个 cookie 中的随机数也不会相同。

    通过检查两个 cookie 的存在,您可以确保两个条件都已满足。

    而且,如果您希望 15 分钟 cookie 在任何页面加载时不断刷新,您可以让您的服务器在每个页面加载时重新创建该 cookie,并在 15 分钟后重新创建一个新的时间。

    【讨论】:

    • +1 太棒了。我一直在寻找这样的想法,因为我最近也遇到了同样的问题。
    猜你喜欢
    • 1970-01-01
    • 2014-04-15
    • 2011-11-22
    • 2020-10-18
    • 2013-06-13
    • 1970-01-01
    • 1970-01-01
    • 2016-11-08
    • 1970-01-01
    相关资源
    最近更新 更多