如何禁止通过Express-session存储的会话的TTL刷新?

时间:2017-08-08 14:36:37

标签: node.js session cookies redis express-session

我对会话处理有一些要求,而且我在执行会话时遇到了问题。

会话需要:

  1. 如果用户处于非活动状态,则在30分钟后过期
  2. 从用户首次登录后的8小时内过期,无论活动如何。
  3. 我能够配置项目1而不是项目2.每次用户浏览应用程序时,cookie都会更新(时间+ 30分钟)并发送回浏览器,但同时会话存储TTL也是刷新。最后一部分是我需要停止的。

    我相信TTL刷新是作为快速会话的一项功能实现的。 Session.touch()由中间件调用,但是有一个设置会删除此操作吗?

    堆栈: 节点,express,express-session,connect-redis用于会话存储。

    配置:

    keyup

1 个答案:

答案 0 :(得分:0)

我不认为选项2是快速会话支持的功能。因此,您可以只为每个会话添加一个属性,指示它的启动时间,然后每隔10分钟左右(可能是一个间隔计时器),查询该属性超过8小时的所有会话并将其从数据库。

您可以实现在每个请求上检查会话过期的中间件,如果发现会话超过8小时,则删除会话。

您应该知道,实现此行为可能会导致用户在使用您的应用程序时丢失其会话(这就是通常不以这种方式实现的原因)。