2012-09-11 42 views
2

我正在構建與後端的Express交談的單頁JavaScript應用。在應用程序的不同位置,我們與後端進行交互,更新會話。出於安全原因,會話過期相對較短。如何獲得不更新會話的Express/Connect路由

其中,我想提醒用戶,會話可能會過期,如果它們已經閒置了很長時間並且沒有與後端進行任何交易。

我想要一個Express「heartbeat」路線,它返回會話剩餘時間(session.maxAge),但我不希望它刷新會話過期。

connect.session代碼在請求結束時自動刷新會話。

我正在尋找一種方法來訪問會話來獲取maxAge,但沒有更新它。

+0

你有沒有考慮過使用http://socket.io? – InspiredJW

+0

嘿,那就是我正在使用的。但是,socket.io +集羣+ redisstore + xhr_polling =完全失敗(https://github.com/LearnBoost/socket.io/issues/939)。所以,我正在尋找一個老派的解決方法。另外 - 通過socket.io觸摸會話不會更新cookie上的過期 - 所以redis/cookie過期會變得不一致,直到發出真正的請求。 –

回答

0

最好的辦法是手動修改您的SessionStore,以便在來自特定路由(req.url)時不會修改會話過期。

查找調用Session.touch()的sessionStore部分。