2017-02-06 67 views
0

我知道我們可以session.setMaxInactiveInterval(1200);來設置不活動時的會話終止時間。我有一個要求,像用戶會話應該在給定的時間點到期。Spring MVC會話最大生命週期

例如,如果用戶配置爲從上午9點到下午9點進行訪問,則應該在下午9點強制退出。

有沒有像session.maxLife(1200);或任何其他解決方案來實現這個功能?

+0

如果我明白了,你想在特定時間到期會話嗎? – Hrabosch

+0

@Hrabosch在特定時間或特定間隔後;以可能的情況爲準 – Saju

+0

所以,我不知道任何你可以做到的事情。但是,也許你可以通過在特定時間計算壽命來設置會話超時。我的意思是像Session這樣的東西現在被創建,所以檢查什麼是時間,從中計算一個生命週期。但我從來沒有嘗試過!現在只是想法。 – Hrabosch

回答

1

我認爲你想通過攔截器來實現。只有不同之處在於,不是最初決定生命週期,而是在分析會話後動態阻止/允許請求。會話中可用的不同方法列於http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpSession.html

您可以爲每個會話設置自定義屬性,例如accessStartTime,accessEndTime並在攔截器中爲所有請求每次讀取它們。如果當前時間不在用戶訪問時間段的範圍內,則可以在會話對象上調用invalidate。

+0

感謝您的建議。不過,我正在尋找一種無攔截器/過濾器的解決方案。我想在春季使用任何內置功能,避免在每次請求時檢查此開銷 – Saju