繁体   English   中英

到期的节点会话cookie

[英]Node session cookie that expires

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

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

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

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

我目前正在尝试节点和表达,因此任何针对该构建量身定制的洞察力都将受到赞赏。

因为您创建会话cookie的方式是省略过期,所以您无法使用单个cookie实际执行此操作。

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

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

如果浏览器关闭,会话cookie将被删除。 如果15分钟过后,第二个cookie将被删除。 如果浏览器已关闭然后重新打开,则不会有会话cookie,即使您输入另一个cookie,第二个cookie也不会包含相同的随机数。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM