【问题标题】:Ephemeral & MaxAge for express-session用于快速会话的 Ephemeral 和 MaxAge
【发布时间】:2016-10-03 21:55:02
【问题描述】:

我正在尝试在 express-js 应用程序中使用 express-session 包进行会话管理。

我有以下要求:

  1. Cookie 在浏览器关闭时在客户端被销毁。
  2. Cookie 在闲置 15 分钟后被销毁。
  3. Cookie 在创建 3 小时后被销毁(无论活动如何)。

(数字只是示例)。

我可以通过将 cookie maxAge 操作到最大值来处理空闲时间。但是,当我阅读 express-session 文档时,我看到:

默认情况下 cookie.maxAge 为 null,表示没有“expires”参数 设置使 cookie 成为浏览器会话 cookie。当用户 关闭浏览器,cookie(和会话)将被删除。

那么,如何创建一个“浏览器会话”cookie,它也有一个 maxAge(用于空闲/绝对超时)?

我也使用node-client-session package 进行了调查,但它不允许使用 ephemeral 和 maxAge。

【问题讨论】:

  • 我不认为有 ephemeral AND expiring cookie 这样的东西,它是一个或另一个(如果一个 cookie 没有设置为 maxAgeexpires 属性,它是一个会话/临时 cookie)。见RFC 6265
  • 所以我想答案是将其设置为临时 cookie,然后自己在服务器端进行所有空闲/超时管理。
  • 是的,恐怕是的。
  • @robertklep 将其设置为答案,以便我接受。实施起来很简单,实际上可以制作一个不错的包。
  • 随意回答您自己的问题,您的解决方案可能对其他人有帮助(而我的评论仅仅是:评论):D

标签: express session-cookies express-session


【解决方案1】:

在找到这个问题并希望同时拥有会话超时和临时会话之后,我已经完成了此操作。这是我在实际应用程序中所做的工作。

我在我的快速会话配置中使用 maxAge,然后在我的客户端/Web 应用程序代码中我挂钩浏览器事件“onbeforeunload”。 onbeforeunload info

它不是万无一失的,并且有一些浏览器怪癖,但是当 onbeforeunload 触发时,我使用它向服务器发送 ajax 请求以“注销”并终止会话。

现在重要的是要问问自己这样做对用户体验 (UX) 和会话体验的预期行为有何影响。如果您想要一个短暂的会话,那么它将针对一个特定的应用程序,只要浏览器打开,您就希望在其中某些东西可用。这也可以通过较短的会话年龄来完成。我们必须考虑实施它的目的是什么。

【讨论】:

    猜你喜欢
    • 2019-01-03
    • 2012-09-27
    • 2016-08-08
    • 2020-09-07
    • 1970-01-01
    • 1970-01-01
    • 2017-11-03
    • 1970-01-01
    • 2018-02-12
    相关资源
    最近更新 更多