一种解决基于Shiro框架并集成Redis的系统登出无效的方法技术方案

技术编号:23671876 阅读:27 留言:0更新日期:2020-04-04 17:28
本发明专利技术涉及基于Shiro框架的系统平台,特别涉及一种解决系统集成Redis时登出无效的方法:一、在配置文件中的Session管理节点内增加Session监听;二、创建监听器并实现Session操作方法;三、在Shiro过滤中将原来的登出过滤器改为认证过滤器;四、创建认证过滤器并实现其方法;五、将原来的logout改为匿名访问;六、在控制层创建logout登出方法;七、修改前端页面的登出路径指向新的登出方法。本发明专利技术解决了基于Shiro框架并集成了Redis的系统登出时无效的问题。

A solution to invalid system logout based on Shiro framework and redis integration

【技术实现步骤摘要】
一种解决基于Shiro框架并集成Redis的系统登出无效的方法
本专利技术涉及基于Shiro框架的系统平台,特别涉及一种解决基于Shiro框架并集成Redis的系统登出无效的方法。
技术介绍
随着公司的业务发展,使用系统的用户越来越多,为了使系统能适应大规模的访问,公司采用了Nginx集群部署,使用Redis做为Session共享的技术依靠。但由于系统采用的是Shiro权限框架,登出功能使用的是Shiro提供的登出过滤器,这与Redis共享Session的方式存在冲突,每次点击登出时,没行执行过滤器中的方法,而是页面直接显示400错误,重新刷新页面时,依然如此,不会跳转到登录页面。这种问题对于用户来说,体验非常不好,每次登出系统都要关闭浏览器才行,导致用户的大量流失。本专利技术采用了Session监听的方式,并使用认证过滤器替代登出过滤器,将其登出方法移转到登出action中,如此即实现了Session共享又达到了登出系统的目的,完美解决了Shiro与Redis兼容的问题。
技术实现思路
本专利技术解决的技术问题在于提供一种解决基于Shiro框架并集成Redis的系统登出无效的方法;本专利技术解决了基于Shiro框架并集成了Redis的系统登出时无效的问题。本专利技术解决上述技术问题的技术方案是:一、在配置文件中的Session管理节点内增加Session监听;二、创建监听器并实现Session操作方法;三、在Shiro过滤中将原来的登出过滤器改为认证过滤器;四、创建认证过滤器并实现其方法;五、将原来的logout改为匿名访问;六、在控制层创建logout登出方法;七、修改前端页面的登出路径指向新的登出方法。所述的方法具体包括如下步骤:步骤一、在配置文件中的Session管理节点内增加Session监听,并创建Session监听对象节点;步骤二、本创建监听器并实现Session操作方法,所述的监听器实现了SessionListener接口,所述的操作方法主要有:Session开始、Session结束以及Session过期等方法;步骤三、在Shiro过滤中将原来的登出过滤器改为认证过滤器,所述的登出过滤器主要是用来在退出系统前清空数据、添加日志以及移除Session;步骤四、创建认证过滤器并实现其onAccessDenied方法,所述的方法主要是指定哪些需要访问路径需要放行、哪些需要认证授权;步骤五、将原来的logout改为匿名访问,在无Redis时,系统使用的是logout过滤器进行登出,配置时如/logout=logout,而改动后配置如:/logout.action=anno;步骤六、在控制层创建logout登出方法,所述的方法与原logout过滤器的方法相同;步骤七、修改前端页面的登出路径指向新的登出方法。本专利技术的有益效果:采用了Session监听的方式,并使用认证过滤器替代登出过滤器,将其登出方法移转到登出action中,实现了Session共享与完美登出系统的目的。有效地解决了基于Shiro框架并集成了Redis的系统登出时无效的问题。附图说明下面结合附图对本专利技术进一步说明:图1为本专利技术的流程图。具体实施方式如图1所示,本专利技术采用如下步骤:步骤一、在配置文件中的Session管理节点内增加Session监听,并创建Session监听对象节点;如:<beanid="SessionManager"class="com.shiro.ShiroSessionManager"><propertyname="SessionListeners"ref="shiroSessionListener"></property></bean><beanid="shiroSessionListener"class="com.asdzy.common.shiro.ShiroSessionListener"></bean>步骤二、本创建监听器并实现Session操作方法,所述的监听器实现了SessionListener接口,所述的操作方法主要有:Session开始、Session结束以及Session过期等方法;如:publicclassShiroSessionListenerimplementsSessionListener{@AutowiredprivateRedisSessionDAOredisSessionDAO;@OverridepublicvoidonStart(SessionSession){}@OverridepublicvoidonStop(SessionSession){redisSessionDAO.delete(Session);}@OverridepublicvoidonExpiration(SessionSession){redisSessionDAO.delete(Session);}}步骤三、在Shiro过滤中将原来的登出过滤器改为认证过滤器,所述的登出过滤器主要是用来在退出系统前清空数据、添加日志以及移除Session;如://原过滤器配置<propertyname="filters"><map><entrykey="logout"value-ref="logoutFilter"/></map></property>//新过滤器配置<propertyname="filters"><util:map><entrykey="auth"><beanclass="com.shiro.AuthorizeFilter"/></entry></util:map></property>步骤四、创建认证过滤器并实现其onAccessDenied方法,所述的方法主要是指定哪些需要访问路径需要放行、哪些需要认证授权;如:publicclassAuthorizeFilterextendsAuthorizationFilter{@OverrideprotectedbooleanonAccessDenied(ServletRequestservletRequest,ServletResponseservletResponse)throwsIOException{HttpServletRequestrequest=(HttpServletRequest)servletRequest本文档来自技高网...

【技术保护点】
1.一种解决基于Shiro框架并集成Redis的系统登出无效的方法,其特征在于:一、在配置文件中的Session管理节点内增加Session监听;二、创建监听器并实现Session操作方法;三、在Shiro过滤中将原来的登出过滤器改为认证过滤器;四、创建认证过滤器并实现其方法;五、将原来的logout改为匿名访问;六、在控制层创建logout登出方法;七、修改前端页面的登出路径指向新的登出方法。/n

【技术特征摘要】
1.一种解决基于Shiro框架并集成Redis的系统登出无效的方法,其特征在于:一、在配置文件中的Session管理节点内增加Session监听;二、创建监听器并实现Session操作方法;三、在Shiro过滤中将原来的登出过滤器改为认证过滤器;四、创建认证过滤器并实现其方法;五、将原来的logout改为匿名访问;六、在控制层创建logout登出方法;七、修改前端页面的登出路径指向新的登出方法。


2.根据权利要求1所述的基于Shiro框架系统的一种解决其在集成Redis时登出无效的方法,其特征在于:添加Session监听器,使用认证过滤器替代原来的logout过滤器,将logout方法改为匿名访问,并重新指定登出路径;所述的方法具体包括如下步骤:
步骤一、在配置文件中的Session管理节点内增加Session监听,并创建Session监听对象节点;
步骤二、本创建监...

【专利技术属性】
技术研发人员:陈林张来卿庞严冬
申请(专利权)人:珠海横琴盛达兆业科技投资有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1