自从之前研究了security3一段时间,发现也不咋滴,后来转行去玩玩shiro,感觉还是挺不错的,小巧灵活;然后遇到个大家都应该遇到过的问题就是当用户退出或者异常关闭浏览器的时候不会自动清除缓存授权信息,当然shiro是有个玩意会自动扫描过期的会话,但是它只会清除会话信息不会清除cache里面的信息,看了网上的答案都是不靠谱的,最好还是自己看源码吧,下面看我的解决方案
<!-- 默认会话管理器 -->
<bean id="sessionManager"
class="com.shadow.shiro.extend.session.impl.SimpleWebSessionManager">
<property name="globalSessionTimeout" value="15000" />
<property name="sessionValidationInterval" value="30000" />
<property name="sessionValidationSchedulerEnabled" value="true" />
</bean>
全局的会话信息设置成15秒,检测扫描信息间隔30秒,第三个参数就是是否开启扫描
至于我的sessionManager实现类是自己继承,然后重写了其中一个方法
package com.shadow.shiro.extend.session.impl;
import java.util.Collection;
import java.util.Iterator;
import org.apache.log4j.Logger;
import org.apache.shiro.cache.CacheManager;
import org.apache.shiro.session.ExpiredSessionException;
import org.apache.sh

本文探讨了在使用Shiro安全框架时遇到的问题,即用户退出或异常关闭浏览器后,缓存授权信息未能自动清除。尽管Shiro会自动扫描并清除过期会话,但无法清理Cache中的信息。作者建议通过深入理解源码来寻找解决方案,并分享了自定义SessionManager的实现,以确保正确清理缓存信息。
最低0.47元/天 解锁文章
9109

被折叠的 条评论
为什么被折叠?



