是否可以创建一个会话cookie(一个在浏览器关闭时自动删除)并且还有一个到期时间,以便它在设定的时间后过期,让我们说15分钟,除非用户继续使用网站?如果他们使用该网站,我想重置到期时间,以便再持续15分钟。
我真的很幸运,要么创建一个在浏览器关闭时过期的会话cookie,要么作为持久cookie保留,但是使用expires或maxAge参数到期。
我唯一能想到的是创建一个会话cookie,其中存储有时间戳值,并且在会话中间件中,检查当前时间>时间戳值然后拒绝请求并通过将其设置为null来删除cookie。如果当前时间< =时间戳将时间戳更新为新日期,从而有效地延长了会话超时。
虽然我的想法可行,但它让我觉得有一种更正式的方式来实现我想要的东西。
我目前正在尝试使用node和express,因此我们将非常感谢为该扩建量身定制的任何洞察力。
答案 0 :(得分:1)
因为您创建会话cookie的方式是暂停过期,所以您无法使用单个cookie实现此目的。
但是,你可以使用两个cookie,一个会话cookie和一个到期cookie来实现。这有两个cookie的逻辑:
session=randomNumber
。expiry=randomNumber
,在15分钟后过期。如果浏览器关闭,会话cookie将被删除。 如果15分钟过后,第二个cookie将被删除。 如果浏览器已关闭然后重新打开,那么它就不会成为会话cookie,即使你再输入另一个cookie,第二个cookie也不会有相同的随机数。
通过检查两个Cookie是否存在,您确保已满足这两个条件。
而且,如果您希望15分钟的cookie在任何页面加载时不断刷新自己,您可以让服务器在每个页面上重新创建该cookie,并在15分钟后重新启动新的时间。