到期的节点会话cookie

时间:2014-05-31 02:21:08

标签: node.js session express

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

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

我唯一能想到的是创建一个会话cookie,其中存储有时间戳值,并且在会话中间件中,检查当前时间>时间戳值然后拒绝请求并通过将其设置为null来删除cookie。如果当前时间< =时间戳将时间戳更新为新日期,从而有效地延长了会话超时。

虽然我的想法可行,但它让我觉得有一种更正式的方式来实现我想要的东西。

我目前正在尝试使用node和express,因此我们将非常感谢为该扩建量身定制的任何洞察力。

1 个答案:

答案 0 :(得分:1)

因为您创建会话cookie的方式是暂停过期,所以您无法使用单个cookie实现此目的。

但是,你可以使用两个cookie,一个会话cookie和一个到期cookie来实现。这有两个cookie的逻辑:

  1. 创建一个随机数。
  2. 创建会话Cookie,例如session=randomNumber
  3. 创建第二个Cookie expiry=randomNumber,在15分钟后过期。
  4. 让您的代码检查两个cookie是否存在并包含相同的随机数。
  5. 如果浏览器关闭,会话cookie将被删除。 如果15分钟过后,第二个cookie将被删除。 如果浏览器已关闭然后重新打开,那么它就不会成为会话cookie,即使你再输入另一个cookie,第二个cookie也不会有相同的随机数。

    通过检查两个Cookie是否存在,您确保已满足这两个条件。

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