是否可以创建一个会话cookie(一个在浏览器关闭时自动删除)并且还有一个到期时间,以便它会在设定的时间后过期,比如15分钟,除非用户继续使用该网站?如果他们使用该网站,我想重置过
我真的很幸运,要么创建一个会话cookie,该会话cookie在浏览器关闭时到期,要么作为持久cookie保留,但是使用expires或maxAge参数到期.
我唯一能想到的是创建一个会话cookie,其中存储有时间戳值,并且在会话中间件中,检查当前时间>时间戳值然后拒绝请求并通过将其设置为null来删除cookie.如果当前时间是< =时间戳,则将时间戳更新为新日期,从而有效地延长会话超时. 虽然我的想法可行,但它让我觉得有一种更正式的方式来实现我想要的东西. 我目前正在尝试节点和表达,因此任何针对该构建量身定制的洞察力都将受到赞赏.
因为您创建会话cookie的方式是省略过期,所以您无法使用单个cookie实际执行此操作.但是,您可以使用两个cookie,一个会话cookie和一个到期cookie来实现.以下是使用两个cookie执行此操作的一些逻辑:
>创建一个随机数.
>创建会话cookie,例如session = randomNumber.
>创建第二个cookie expiry = randomNumber,在15分钟后到期.
>让代码检查两个cookie是否存在并包含相同的随机数.
如果浏览器关闭,会话cookie将被删除.
如果15分钟过后,第二个cookie将被删除.
如果浏览器已关闭然后重新打开,则不会有会话cookie,即使您输入另一个cookie,第二个cookie也不会包含相同的随机数.
通过检查两个cookie的存在,您确保已满足这两个条件.
而且,如果您希望15分钟的cookie在任何页面加载时不断刷新自己,您可以让服务器在每个页面上重新创建该cookie,并在15分钟后重新启动.