2012-10-31 31 views
1

嗨我为我的web应用程序使用expressjs,我使用session中间件,我的问题是如何在会话过期之前做一些事情?我该如何在会话过期之前做一些事情(销毁)

例如,我在会话中存储了一些东西,并且我将req.session.cookie.maxAge设置为60000(1分钟),当会话超时时,我想将会话中的数据保存到磁盘,我该如何做到这一点?我查了API和destroy函数只支持callback ...

谢谢!

回答

1

假设你使用的是connect-session没有什么像会话过期事件。

会话过期之一:客户端(当Cookie会过时)上

  • 。在提出请求之前无法知道该事件,因此存在事件永远不会被触发的危险。
  • 在会话存储中,通常使用某种形式的生存时间。并非所有的会话存储都支持事件,所以通常不能完成通知。

但是你可以尝试实现使用setTimeout()自己的检查 - 当超时检查会议的截止日期到现在足够接近,做任何你需要做的。

+0

感谢您的回复,我正在使用connect-session。我想过setTimeout(),但它可能会增加CPU开销...我认为如果没有办法做到这一点,我最终会使用setTimeout()...谢谢 – Chun

+0

@Chun它不应该增加CPU开销许多。只需将超时设置为会话的预期生存时间即可。 – soulcheck