Shiro中设置session超时时间

本文介绍了两种在Shiro中设置session超时时间的方法:一是通过配置文件,二是直接调用Session接口的setTimeout()方法。特别指出,直接设置setTimeout()的方法优先级高于配置文件,并且设置的超时时间单位为毫秒,Shiro会将其转换为秒并忽略小数部分。若要使session永不过期,可以设置小于-1000的数值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、通过配置文件方式进行设置

<!-- 会话管理器 -->
<bean id="sessionManager"         
    class="org.apache.shiro.web.session.mgt.DefaultWebSessionManager">

    <!-- 设置超时时间--单位:ms -->
    <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>

二、通过调用Shiro中的Session接口的setTimeout()方法来进行

在使用 Spring Boot 和 Shiro 框架的时候,如果用户长时间不进行操作,会话就会超时。可以通过以下方式来解决会话超时的问题: 1. 设置会话超时时间 可以通过在 shiro.ini 或者 shiro.yml 配置文件中设置超时时间,例如: ``` sessionManager.globalSessionTimeout = 1800000 ``` 这里设置了会话超时时间为 1800000 毫秒,即 30 分钟。 2. 使用 keep-alive 机制 可以在前端页面使用 keep-alive 机制,保持与后端的连接,防止会话超时。例如,在 Vue.js 中可以使用 keep-alive 组件: ``` <keep-alive> <router-view></router-view> </keep-alive> ``` 3. 在会话超时时进行跳转 可以在 Shiro 的配置文件中设置会话超时时的跳转页面,例如: ``` sessionManager.globalSessionTimeout = 1800000 securityManager.sessionManager = $sessionManager securityManager.sessionManager.sessionIdUrlRewritingEnabled = false securityManager.sessionManager.sessionValidationSchedulerEnabled = true securityManager.sessionManager.sessionValidationInterval = 1800000 securityManager.sessionManager.deleteInvalidSessions = true securityManager.sessionManager.sessionIdCookieEnabled = true securityManager.sessionManager.sessionIdCookie.name = JSESSIONID securityManager.sessionManager.sessionIdCookie.path = / securityManager.sessionManager.sessionIdCookie.httpOnly = true securityManager.sessionManager.sessionIdCookie.maxAge = -1 securityManager.sessionManager.sessionIdCookie.domain = securityManager.sessionManager.sessionIdCookie.sameSite = null securityManager.sessionManager.sessionValidationScheduler.interval = 1800000 shiro.filter.loginUrl = /login shiro.filter.successUrl = /index shiro.filter.unauthorizedUrl = /unauthorized securityManager.realms = $jdbcRealm ``` 在配置文件中设置 unauthorizedUrl 属性,用于在会话超时时进行跳转。 以上是解决 Spring Boot 和 Shiro 框架会话超时问题的几种方法,希望能够帮到你。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

技术杠精

你的鼓励是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值