今天就跟大家聊聊有关在java项目中利用shiro实现退出登陆并清空缓存,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
spring-shiro.xml:
<!-- 安全认证过滤器 --> <bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean"> <property name="securityManager" ref="securityManager" /> <property name="loginUrl" value="/b/login" /> <property name="successUrl" value="/b" /> <property name="filters"> <map> <!--退出过滤器--> <entry key="logout" value-ref="systemLogoutFilter" /> </map> </property> <property name="filterChainDefinitions"> <value> /b/login = authc /b/logout = logout /b/** = user </value> </property> </bean>
当调用的路径匹配到/b/logout,会进入到SystemLogoutFilter过滤器,SystemLogoutFilter继承了LogoutFilter,并重写了preHandle方法,在preHandle方法执行需要清空的数据。
@Service public class SystemLogoutFilter extends LogoutFilter { @Override protected boolean preHandle(ServletRequest request, ServletResponse response) throws Exception { //在这里执行退出系统前需要清空的数据 Subject subject = getSubject(request, response); String redirectUrl = getRedirectUrl(request, response, subject); try { subject.logout(); } catch (SessionException ise) { ise.printStackTrace(); } issueRedirect(request, response, redirectUrl); //返回false表示不执行后续的过滤器,直接返回跳转到登录页面 return false; } }
注意,需要通过@Service注解,使用spring容器来管理,在spring-shiro.xml中配置shiro过滤器直接使用
<entry key="logout" value-ref="systemLogoutFilter" />
看完上述内容,你们对在java项目中利用shiro实现退出登陆并清空缓存有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注亿速云行业资讯频道,感谢大家的支持。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。