shiro設定session超時時間
阿新 • • 發佈:2018-12-12
系統預設超時時間是180000毫秒(30分鐘),可以通過下面2中方式設定自定義的超時時間
1.配置檔案修改
<!-- 會話管理器 --> <bean id="sessionManager" class="org.apache.shiro.web.session.mgt.DefaultWebSessionManager"> <!-- 設定超時時間 --> <property name="globalSessionTimeout" value="1800000"/> <property name="deleteInvalidSessions" value="true"/> <property name="sessionValidationSchedulerEnabled" value="true"/> <property name="sessionValidationScheduler" ref="sessionValidationScheduler"/> <property name="sessionDAO" ref="sessionDAO"/> <property name="sessionIdCookieEnabled" value="true"/> <property name="sessionIdCookie" ref="sessionIdCookie"/> </bean>
2.通過api修改
Shiro的Session介面有一個setTimeout()方法,登入後,可以用如下方式取得session
SecurityUtils.getSubject().getSession().setTimeout(1800000);
設定的最大時間,正負都可以,為負數時表示永不超時。
SecurityUtils.getSubject().getSession().setTimeout(-1000L);
注意:這裡設定的時間單位是:ms,但是Shiro會把這個時間轉成:s,而且是會舍掉小數部分,這樣我設定的是-1ms,轉成s後就是0s,馬上就過期了。所有要是除以1000以後還是負數,必須設定小於-1000