express-session如何管理其会话存储?

时间:2015-03-16 14:29:46

标签: mongodb session cookies express

让我们假设我的node.js + express + socket.io服务器与express-session中间件使用mongoDB作为存储('connect-mongo'){会话的{1}}设置为maxAge(即,只要用户的浏览器打开,cookie就会持续),现在这个服务器完全关闭了。

年龄越过新世纪,nullEarthZombiesWerewolfs撕裂,一群疯狂勇敢的科学家发现完整的残余我的服务器并启动它们。

因此,此时许多(如果不是每个)客户端的浏览器都被关闭并且cookie被清除。如果其中一个客户端将连接到我的服务器,服务器将发现他(客户端)没有提供任何有效的cookie并将为他创建一个新的。

现在 - 我感兴趣的部分 - 存储在Alien Invaders存储中的旧sessions发生了什么。显然服务器在他关闭时无法清理它们,现在它们只是作为数据存储中的死货而挂起?或者它背后有一些令人费解的魔力,在服务器重启之后,会以某种方式“知道”这些用户很久以前就已经结束了他们的会话,而服务器已关闭并且会相应地清理所有内容吗?

1 个答案:

答案 0 :(得分:1)

express-session并没有对其商店强制执行任何清理行为(至少我在source code中没有看到任何证据)。但是,商店当然可以清理陈旧的会话。例如,来自connect-mongo documentation

  

默认情况下,connect-mongo使用MongoDB的TTL收集功能(2.2+)让mongod自动删除过期的会话。但是你可以改变这种行为。