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


相关推荐: Laravel如何集成微信支付SDK_Laravel使用yansongda-pay实现扫码支付【实战】  绝密ChatGPT指令:手把手教你生成HR无法拒绝的求职信  如何自定义safari浏览器工具栏?个性化设置safari浏览器界面教程【技巧】  如何在香港服务器上快速搭建免备案网站?  如何快速生成ASP一键建站模板并优化安全性?  手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?  laravel怎么为API路由添加签名中间件保护_laravel API路由签名中间件保护方法  如何在阿里云ECS服务器部署织梦CMS网站?  详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)  Gemini手机端怎么发图片_Gemini手机端发图方法【步骤】  微信小程序 闭包写法详细介绍  javascript中的try catch异常捕获机制用法分析  laravel怎么在请求结束后执行任务(Terminable Middleware)_laravel Terminable Middleware请求结束任务执行方法  Laravel的契約(Contracts)是什么_深入理解Laravel Contracts与依赖倒置  html5audio标签播放结束怎么触发事件_onended回调方法【教程】  Laravel Eloquent访问器与修改器是什么_Laravel Accessors & Mutators数据处理技巧  Android中AutoCompleteTextView自动提示  Laravel如何生成URL和重定向?(路由助手函数)  Laravel如何处理和验证JSON类型的数据库字段  如何在腾讯云服务器上快速搭建个人网站?  用yum安装MySQLdb模块的步骤方法  如何用好域名打造高点击率的自主建站?  在线制作视频的网站有哪些,电脑如何制作视频短片?  logo在线制作免费网站在线制作好吗,DW网页制作时,如何在网页标题前加上logo?  深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?  Laravel如何构建RESTful API_Laravel标准化API接口开发指南  Laravel如何自定义分页视图?(Pagination示例)  如何挑选优质建站一级代理提升网站排名?  HTML透明颜色代码在Angular里怎么设置_Angular透明颜色使用指南【详解】  Laravel如何使用Socialite实现第三方登录?(微信/GitHub示例)  在centOS 7安装mysql 5.7的详细教程  惠州网站建设制作推广,惠州市华视达文化传媒有限公司怎么样?  如何快速启动建站代理加盟业务?  php后缀怎么变mp4格式错误_修改扩展名提示格式不对怎么办【技巧】  Laravel如何实现邮箱地址验证功能_Laravel邮件验证流程与配置  如何用IIS7快速搭建并优化网站站点?  Laravel怎么发送邮件_Laravel Mail类SMTP配置教程  Laravel如何配置和使用队列处理异步任务_Laravel队列驱动与任务分发实例  小米17系列还有一款新机?主打6.9英寸大直屏和旗舰级影像  jQuery validate插件功能与用法详解  Laravel如何实现密码重置功能_Laravel密码找回与重置流程  Laravel定时任务怎么设置_Laravel Crontab调度器配置  Bootstrap CSS布局之列表  手机怎么制作网站教程步骤,手机怎么做自己的网页链接?  Laravel如何获取当前登录用户信息_Laravel Auth门面使用与Session用户读取【技巧】  🚀拖拽式CMS建站能否实现高效与个性化并存?  香港服务器建站指南:外贸独立站搭建与跨境电商配置流程  Laravel如何实现全文搜索功能?(Scout和Algolia示例)  Laravel如何使用Passport实现OAuth2?(完整配置步骤)  Laravel的.env文件有什么用_Laravel环境变量配置与管理详解