我在webapp中使用Apache Shiro。Shiro在2分鐘後重置會話
我在會話中存儲了一些參數,特別是存儲在數據庫中的對象的主鍵。
當用戶登錄時,我從數據庫加載對象並將主鍵保存在會話中。然後,在應用程序中,用戶可以編輯對象的數據,並點擊取消或保存按鈕。
這兩個按鈕都會觸發一個RPC,它將更新後的數據發送到服務器。然後使用存儲在會話中的主鍵在數據庫中更新對象。
如果用戶在應用程序中保持活動狀態(製作一些RPC),一切正常。但是如果他在3分鐘內保持不活動狀態並隨後發出RPC,則Shiro的securityUtils.getSubject().getSession()
將返回空值。
會話超時設置爲1,200,000毫秒(20分鐘),所以我不認爲這是問題。
當我瀏覽存儲在會話管理器緩存中的會話時,我可以看到用戶的會話org.apache.shiro.session.mgt.SimpleSession,id=6de78f10-b58e-496c-b40a-e2a9a4ad069c
,但是當我嘗試從cookie中獲取會話ID並呼叫SecurityUtils.getSecurityManager().getSession(key)
獲取會話(其中密鑰是SessionKey實現):我收到一個異常。
當我嘗試從會話ID創建新主題時,我失去了會話中保存的所有屬性。
我很高興發佈一些代碼來幫助解決問題,但我嘗試了很多解決方法,我不知道從哪裏開始......所以請讓我知道您需要什麼。
另外,如果有人知道比四郎更好的記錄框架,我所有的耳朵(Shiro的缺乏文件使得消費真的太時)
那麼修復是什麼?這從你的回答中並不明顯,因爲你沒有解釋你已經改變或發佈了原始配置。 – frhd