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

发布时间 - 2026-01-10 23:10:27    点击率:

上一篇介绍了使用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" />

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# shiro  # 清空缓存  # 退出  # 清除缓存  # shiro清除权限缓存  # 如何基于LoadingCache实现Java本地缓存  # Java缓存Map设置过期时间实现解析  # 如何在 Java 中实现一个 redis 缓存服务  # Java中LocalCache本地缓存实现代码  # Java LocalCache 本地缓存的实现实例  # Java本地缓存的实现代码  # Java自定义注解实现Redis自动缓存的方法  # Java实现一个简单的缓存方法  # Java 实现缓存的三种方式及问题汇总  # 清空  # 是一个  # 在这里  # 管理系统  # 我们可以  # 写了  # 重写  # 上一篇  # 管理平台  # 大家多多  # 跳转到  # 安全认证  # 继承了  # 被广泛  # gt  # bean  # id  # lt  # brush  # class 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Win11怎么关闭资讯和兴趣_Windows11任务栏设置隐藏小组件  Laravel请求验证怎么写_Laravel Validator自定义表单验证规则教程  Laravel如何处理和验证JSON类型的数据库字段  高防服务器租用指南:配置选择与快速部署攻略  Laravel如何实现URL美化Slug功能_Laravel使用eloquent-sluggable生成别名【方法】  PHP 500报错的快速解决方法  最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?  如何快速搭建安全的FTP站点?  java获取注册ip实例  微信小程序 scroll-view组件实现列表页实例代码  JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)  nodejs redis 发布订阅机制封装实现方法及实例代码  Laravel storage目录权限问题_Laravel文件写入权限设置  html5怎么画眼睛_HT5用Canvas或SVG画眼球瞳孔加JS控制动态【绘制】  Laravel如何实现数据导出到PDF_Laravel使用snappy生成网页快照PDF【方案】  javascript如何操作浏览器历史记录_怎样实现无刷新导航  如何在宝塔面板中创建新站点?  装修招标网站设计制作流程,装修招标流程?  学生网站制作软件,一个12岁的学生写小说,应该去什么样的网站?  Laravel如何集成微信支付SDK_Laravel使用yansongda-pay实现扫码支付【实战】  移动端脚本框架Hammer.js  Laravel如何使用缓存系统提升性能_Laravel缓存驱动和应用优化方案  小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?  如何自定义建站之星模板颜色并下载新样式?  Claude怎样写约束型提示词_Claude约束提示词写法【教程】  谷歌Google入口永久地址_Google搜索引擎官网首页永久入口  深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?  如何在阿里云购买域名并搭建网站?  高防服务器如何保障网站安全无虞?  Midjourney怎么调整光影效果_Midjourney光影调整方法【指南】  Laravel如何实现本地化和多语言支持?(i18n教程)  极客网站有哪些,DoNews、36氪、爱范儿、虎嗅、雷锋网、极客公园这些互联网媒体网站有什么差异?  Laravel如何使用集合(Collections)进行数据处理_Laravel Collection常用方法与技巧  网站建设整体流程解析,建站其实很容易!  Laravel如何使用模型观察者?(Observer代码示例)  如何快速搭建高效香港服务器网站?  js实现点击每个li节点,都弹出其文本值及修改  Laravel如何实现API版本控制_Laravel版本化API设计方案  开心动漫网站制作软件下载,十分开心动画为何停播?  Laravel如何使用Collections进行数据处理?(实用方法示例)  实现点击下箭头变上箭头来回切换的两种方法【推荐】  Laravel Session怎么存储_Laravel Session驱动配置详解  IOS倒计时设置UIButton标题title的抖动问题  HTML 中动态设置元素 name 属性的正确语法详解  如何用wdcp快速搭建高效网站?  如何挑选优质建站一级代理提升网站排名?  如何快速搭建虚拟主机网站?新手必看指南  详解Huffman编码算法之Java实现  在centOS 7安装mysql 5.7的详细教程  html5如何实现懒加载图片_ intersectionobserver api用法【教程】