java shiro实现退出登陆清空缓存

 更新时间:2017年02月20日 11:33:43   作者:疯狂的猫  
本篇文章主要介绍了java shiro实现退出登陆清空缓存,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

上一篇介绍了使用springmvc集成shiro登陆过程,通过FormAuthenticationFilter过滤器获取到用户输入的账号密码。

shiro是一个被广泛使用的安全层框架,通过xml配置方式与spring无缝对接,用户的登陆/退出/权限控制/Cookie等管理系统基础功能交给shiro来管理。

一般,在JavaWEB管理平台系统时,用户退出系统之前没需要清除用户数据和关闭连接,防止垃圾数据堆积,shiro提供了LogoutFilter过滤器,我们可以继承LogoutFilter,重写preHandle方法,实现清除缓存功能。

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应用线程转储

    一文带你深入解析Java应用线程转储

    在Java应用运维和问题排查过程中,线程转储(Thread Dump)是一个非常重要的工具,它能够帮助我们了解JVM内部线程的运行状态,下面小编来和大家详细介绍一下它吧
    2025-04-04
  • 一个简单的类加载器URLClassLoader案例

    一个简单的类加载器URLClassLoader案例

    这篇文章主要介绍了一个简单的类加载器URLClassLoader案例,这里写了一个小 demo,来加深对于反射的理解,需要的朋友可以参考下
    2023-04-04
  • Java之NIO基本简介

    Java之NIO基本简介

    这篇文章主要介绍了Java之NIO基本简介,文中给大家讲到了NIO 与 BIO的比较结合实例代码给大家介绍的非常详细,需要的朋友可以参考下
    2023-05-05
  • Java IO读取文件的实例详解

    Java IO读取文件的实例详解

    这篇文章主要介绍了Java IO读取文件的实例详解的相关资料,主要介绍字符流和字节流的内容,需要的朋友可以参考下
    2017-07-07
  • Springboot JPA打印SQL语句及参数的实现

    Springboot JPA打印SQL语句及参数的实现

    在SpringBoot项目中调试和优化数据库操作是很常见的需求,本文主要介绍了Springboot JPA打印SQL语句及参数的实现,具有一定的参考价值,感兴趣的可以了解一下
    2024-06-06
  • Java 处理树形结构数据的过程

    Java 处理树形结构数据的过程

    这篇文章主要介绍了Java 处理树形结构数据的过程,本文给大家分析具体实现过程,结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-08-08
  • 多种情况下jar包获取文件的路径,读取文件方式

    多种情况下jar包获取文件的路径,读取文件方式

    文章介绍了在不同情况下(IDEA运行和JAR包运行)获取文件路径的方法,并总结了每种方式的适用场景
    2024-11-11
  • file.mkdir()、file.mkdirs()和file.createNewFile()的区别

    file.mkdir()、file.mkdirs()和file.createNewFile()的区别

    本文主要介绍了file.mkdir()、file.mkdirs()和file.createNewFile()的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-04-04
  • Maven编译文件的编码设置方法

    Maven编译文件的编码设置方法

    在使用Maven进行Java项目的构建时,正确的文件编码设置对于确保项目能够正确编译和运行至关重要,本文将详细介绍如何在Maven中设置编译文件的编码,以确保项目能够正确处理各种语言的文本内容,需要的朋友可以参考下
    2025-02-02
  • SpringBoot框架整合SwaggerUI的示例代码

    SpringBoot框架整合SwaggerUI的示例代码

    项目中使用了很多现成的框架,都是项目经理、架构师带来的,从来没有自己整合过,今天给大家介绍下SpringBoot框架整合SwaggerUI的过程,感兴趣的朋友跟随小编一起看看吧
    2022-02-02

最新评论