我正在開發一個帶有用戶認證和授權的vaadin 7應用程序,使用jaas和應用程序服務器(glassfish)中定義的領域。如何在瀏覽器關閉時關閉vaadin會話但保持http會話?
我有這樣的要求:
用戶可以保持登錄狀態一段時間,因此,他並不需要輸入他的密碼每次。
我通過設置http會話的會話超時來做到這一點。該vaadin會話可以鎖定一些資源,並鎖定時,其他會話無法使用此資源。所有鎖定的資源在vaadin會話關閉時釋放。
我將心跳間隔僅設置爲15秒。
我無法同時獲得兩項要求。 如果我將http會話超時設置爲一分鐘,則在關閉瀏覽器後一分鐘內釋放資源,但用戶下次未通過身份驗證。
如果我將https會話超時設置爲某些日期,則此用戶會被認證,但vaadin會話在3次錯過心跳後不會立即關閉。只有當用戶下次使用相同的http會話時纔會關閉它。
如何達到這兩個要求?
這裏更多信息,與我使用的技術:
- Glassfish的4
- web-app的3.1
- vaadin 7.1.7
- vaadin-CDI 1.0快照
感謝您的幫助
您能否澄清一下您必須釋放哪種鎖定資源?或者你的意思是一般資源? –
在我的情況下,資源是數據庫中的一些條目。我正在使用我自己的鎖定機制。但關鍵問題的確是如何在瀏覽器關閉後關閉vaadin會話而不會使http會話失效。我現在的解決方法是隻發佈我的鎖定數據庫條目,但保持vaadin sesion。我有一個計時器,每分鐘檢查是否仍然收到心跳。 – raffael