2012-10-31 66 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