节点会话cookie过期

是否有可能创build一个会话cookie(一个在浏览器closures时被自动删除),并且还有一个到期的时间,让它在一段时间后过期,比如15分钟,除非用户继续使用该站点? 如果他们使用该网站,我想重置到期,所以它持续另外15分钟。

我只幸运地创build了一个会话cookie,当浏览器closures时会过期,或者作为一个持久cookie保持有效,但是使用expires或者maxAge参数。

我能想到的唯一的事情就是创build一个会话cookie,它具有存储在其中和会话中间件中的时间戳值,检查当前时间>时间戳值,然后拒绝请求并通过将其设置为空来删除cookie 。 如果当前时间<=将时间戳更新为新的date的时间戳有效地延长会话超时。

虽然我的想法可能有效,但这让我觉得有一种更正式的方式来完成我想要的。

我目前正在试验节点和expression,所以任何有针对性的洞察,将不胜感激。

因为您创build会话cookie的方式是避免过期,所以您无法真正使用单个cookie。

但是,您可以使用两个Cookie,一个会话Cookie和一个到期的Cookie。 以下是使用两个Cookie做一些逻辑:

  1. 创build一个随机数字。
  2. 创build一个会话cookie,如session=randomNumber
  3. 创build另一个在15分钟内到期的cookie expiry=randomNumber
  4. 检查你的代码,看看这两个cookie是否存在,并且包含相同的随机数。

如果浏览器closures,会话cookie将被删除。 如果15分钟过去了,第二个cookie将被删除。 如果浏览器closures,然后重新打开,将不会有一个会话cookie,即使你硬币另一个,第二个cookie将不会有相同的随机数字。

通过检查这两个cookies的存在,你是确保两个条件都已经满足。

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