shiro設置session超時時間


系統默認超時時間是180000毫秒(30分鍾)

long timeout = SecurityUtils.getSubject().getSession().getTimeout();
System.out.println(timeout+"毫秒");

可以通過下面2中方式設置自定義的超時時間。

一: 配置文件

<!-- 會話管理器 -->
<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>

二:通過api

Shiro的Session接口有一個setTimeout()方法,登錄后,可以用如下方式取得session

SecurityUtils.getSubject().getSession().setTimeout(1800000);

設置的最大時間,正負都可以,為負數時表示永不超時。

SecurityUtils.getSubject().getSession().setTimeout(-1000l);

注意:

這里設置的時間單位是:ms,但是Shiro會把這個時間轉成:s,而且是會舍掉小數部分,這樣我設置的是-1ms,轉成s后就是0s,馬上就過期了。所有要是除以1000以后還是負數,必須設置小於-1000

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM