DelegatingFilterProxy的原理及使用

DelegatingFilterProxy就是一个对于servlet filter的代理,用这个类的好处主要是通过Spring容器来管理servlet filter的生命周期,还有就是如果filter中需要一些Spring容器的实例,可以通过spring直接注入,另外读取一些配置文件这些便利的操作都可以通过Spring来配置实现。

DelegatingFilterProxy的使用方法,

首先在web.xml中配置:

如果要保留Filter原有的init,destroy方法的调用,还需要配置初始化参数targetFilterLifecycle为true,该参数默认为false

  <filter><filter-name>shiroFilter</filter-name><filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class><init-param><param-name>targetFilterLifecycle</param-name><param-value>true</param-value></init-param></filter><filter-mapping><filter-name>shiroFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping>

然后在Spring的配置文件中,配置具体的Filter类的实例(此处以Shiro为例)。

  <bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean"><!-- Shiro的核心安全接口,这个属性是必须的 --><property name="securityManager" ref="securityManager"></property><!-- 要求登录时的链接(登录页面地址),非必须的属性,默认会自动寻找Web工程根目录下的"/login.jsp"页面 --><property name="loginUrl" value="/login"></property><property name="filters"><map><entry key="anyRole" value-ref="anyRoleAuthorizationFilter" /></map></property><!-- 登录成功后要跳转的连接 --><!-- <property name="successUrl" value="/main" ></property> --><!-- 用户访问未对其授权的资源时,所显示的连接 --><property name="unauthorizedUrl" value="/noAuthority"></property><property name="filterChainDefinitionMap" ref="filterChainFactoryBean"></property></bean>

在Spring中配置的bean的name要和web.xml中的<filter-name>一样

或者在DelegatingFilterProxy的filter配置中配置初始参数:targetBeanName,对应到Spring配置中的beanname

    <filter><filter-name>DelegatingFilterProxy</filter-name><filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class><init-param><param-name>ignoreUrls</param-name><param-value>/caClient.jsp,/403.jsp,/login.html*,/j_spring_security_check,/accounts/**,/secure/logout,/js/**,/app/**,/images/**,/icons/**,/lib/**,/resource/**,/secure/changepassword</param-value></init-param>        <init-param><param-name>targetBeanName</param-name><param-value>commonWebFilter</param-value></init-param><init-param><param-name>targetFilterLifecycle</param-name><param-value>true</param-value></init-param></filter><filter-mapping><filter-name>DelegatingFilterProxy</filter-name><url-pattern>/*</url-pattern></filter-mapping>

applicationContext.xml

<bean id="commonWebFilter" class="com.wonders.LoginFilter"/>

转载于:https://www.cnblogs.com/gaomanito/p/10459967.html

Spring DelegatingFilterProxy 过滤器 的原理及运用相关推荐

  1. 安全认证框架Shiro (二)- shiro过滤器工作原理

    安全认证框架Shiro (二)- shiro过滤器工作原理 安全认证框架Shiro 二- shiro过滤器工作原理 第一前言 第二ShiroFilterFactoryBean入口 第三请求到来解析过程 ...

  2. Filter过滤器工作原理

    Filter过滤器工作原理 Filter简介 Filter也称之为过滤器,它是Servlet技术中最激动人心的技术之一,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Js ...

  3. spring security加载原理(基于springboot)

    一.基本架构 二.自动配置原理 依据 Spring Boot 自动配置原理,其会自动加载spring-boot-autoconfigure.jar中/META-INF/spring.factories ...

  4. 3.了解Spring Boot2自动配置原理

    了解Spring Boot2自动配置原理 1.SpringBoot特点 1.1.依赖管理 1.父项目做依赖管理 依赖管理 <parent><groupId>org.spring ...

  5. Spring MVC过滤器-HiddenHttpMethodFilter

    随时随地技术实战干货,获取项目源码.学习资料,请关注源代码社区公众号(ydmsq666) from:Spring MVC过滤器-HiddenHttpMethodFilter_Blake Luo-CSD ...

  6. Java Servlet中Filter过滤器的原理以及使用方式

    详细介绍了Java Web Servlet中的Filter过滤器的原理以及常见用法. 文章目录 1 Filter接口 1.1 过滤器的生命周期 1.2 doFilter过滤方法 2 Filter的使用 ...

  7. 算法:详解布隆过滤器的原理、使用场景和注意事项@知乎.Young Chen

    算法:详解布隆过滤器的原理.使用场景和注意事项@知乎.Young Chen 什么是布隆过滤器 本质上布隆过滤器是一种数据结构,比较巧妙的概率型数据结构(probabilistic data struc ...

  8. Spring Security过滤器就该这么配置!

    大家好,我是推干货的DD! 今早看到小胖哥更新干货了,关注Spring Security的小伙伴,不可以错过这篇哦! 以前胖哥带大家用Spring Security过滤器实现了手机验证码认证,今天我们 ...

  9. 详解布隆过滤器的原理、使用场景和注意事项

    在进入正文之前,之前看到的有句话我觉得说得很好: Data structures are nothing different. They are like the bookshelves of you ...

  10. Spring Boot自动配置原理、实战

    Spring Boot自动配置原理 Spring Boot的自动配置注解是@EnableAutoConfiguration, 从上面的@Import的类可以找到下面自动加载自动配置的映射. org.s ...

最新文章

  1. Python处理正则表达式超时的办法
  2. STM32开发 -- cannot open source input file absacc.h 解决方法
  3. linux下多种锁的比较
  4. 常用正则表达式大全——包括校验数字、字符、一些特殊的需求
  5. SQLServer常用的字符串函数梳理
  6. html post 发送两次,jQuery Ajax发送两次第二次提交,发送三次三次
  7. 二进制十六进制相互转换
  8. 1 常用Windows命令大全
  9. 51nod 1256 扩展欧几里得
  10. 数仓系列 | Flink 窗口的应用与实现
  11. 学术壁报模板_中华医学会核医学分会2020年学术年会征文通知
  12. StringUtil工具类之去除所有的空白字符
  13. 基于springboot网上书城系统
  14. 魔兽世界忘记账号角色服务器,魔兽世界里我知道了他的游戏角色名字怎样查到他的战网通行证...
  15. Arcgis拓扑检查必须相互覆盖操作步骤
  16. 计算机二级office查分数,3月份office计算机二级内网查分90,写下一点经验给后来人...
  17. Linux Mint 笔记本亮度调节总结
  18. AI研习丨专题:面向共享出行的群体智能技术与应用
  19. Office 2010 解压后无法安装(安装程序包的语言不受系统支持)释疑
  20. java基础巩固-宇宙第一AiYWM:为了维持生计,Redis基础Part7(Redis常见使用(部署)方式:单机模式、主从模式、哨兵模式、集群模式)~整起

热门文章

  1. 解析库之——beautifulsoup
  2. 《SolidWorks 2017中文版机械设计从入门到精通)》——2.7 复合草图实例操作
  3. Windows 8实用窍门系列:16.Windows 8的右键菜单
  4. 开源C++项目Google JavaScript引擎V8挑战实录,带你进入V8之旅
  5. 互联网的未来之下:政权 金权 人权 无关平权
  6. Selenium Grid跨浏览器-兼容性测试
  7. Linux 磁盘与文件系统
  8. lucene的基础入门
  9. 面向对象编程思想概览(三)继承
  10. CentOS 7安装ifconfig