ShiroFilter的工作原理

ShiroFilter:DelegatingFilterProxy作用是自动到Spring 容器查找名字为shiroFilter(filter-name)的bean并把所有Filter 的操作委托给它。

问题讲解:为什么applicationContext.xml中的id必须和web.xml文件中配置的DelegatingFilterProxy的 <filter-name> 一致?

applicationContext.xml中的id必须和web.xml文件中配置的DelegatingFilterProxy的 <filter-name> 一致
若不一致,则会抛出:NoSuchBeanDefinitionException. 因为 Shiro 会来 IOC 容器中查找和 <filter-name> 名字对应的 filter bean.

  1. <bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">
  2. <property name="securityManager" ref="securityManager"/>
  3. <property name="loginUrl" value="/login.jsp"/>
  4. <property name="successUrl" value="/list.jsp"/>
  5. <property name="unauthorizedUrl" value="/unauthorized.jsp"/>
  6.  
  7. <!--
  8. 配置哪些页面需要受保护
  9. 以及访问这些页面需要的权限
  10. 1). anon 可以被匿名访问
  11. 2). authc 必须认证(即登录)后才可以访问的页面
  12. -->
  13. <property name="filterChainDefinitions">
  14. <value>
  15. /login.jsp = anon
  16.  
  17. # everything else requires authentication:
  18. /user.jsp = authc
  19. </value>
  20. </property>
  21. </bean>

web.xml:

  1. <!-- Shiro Filter is defined in the spring application context: -->
  2. <!--
  3. 1. 配置 Shiro 的 shiroFilter.
  4. 2. DelegatingFilterProxy 实际上是 Filter 的一个代理对象. 默认情况下, Spring 会到 IOC 容器中查找和
  5. <filter-name> 对应的 filter bean. 也可以通过 targetBeanName 的初始化参数来配置 filter bean 的 id.
  6. -->
  7. <filter>
  8. <filter-name>shiroFilter</filter-name>
  9. <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
  10. <init-param>
  11. <param-name>targetFilterLifecycle</param-name>
  12. <param-value>true</param-value>
  13. </init-param>
  14. </filter>
  15.  
  16. <filter-mapping>
  17. <filter-name>shiroFilter</filter-name>
  18. <url-pattern>/*</url-pattern>
  19. </filter-mapping>

若想修改shiroFilter名称,即自定义,web.xml需要添加如下内容:

  1. <!-- Shiro Filter is defined in the spring application context: -->
  2. <!--
  3. 1. 配置 Shiro 的 shiroFilter.
  4. 2. DelegatingFilterProxy 实际上是 Filter 的一个代理对象. 默认情况下, Spring 会到 IOC 容器中查找和
  5. <filter-name> 对应的 filter bean. 也可以通过 targetBeanName 的初始化参数来配置 filter bean 的 id.
  6. -->
  7. <filter>
  8. <filter-name>shiroFilter</filter-name>
  9. <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
  10. <init-param>
  11. <param-name>targetFilterLifecycle</param-name>
  12. <param-value>true</param-value>
  13. </init-param>
  14. <init-param>
  15. <param-name>targetBeanName</param-name>
  16. <param-value>abc</param-value>
  17. </init-param>
  18. </filter>
  19.  
  20. <filter-mapping>
  21. <filter-name>shiroFilter</filter-name>
  22. <url-pattern>/*</url-pattern>
  23. </filter-mapping>

applicationContext.xml:

  1. <!--
  2. 6.配置ShiroFilter
  3. 6.1 id必须和web.xml文件中配置的DelegatingFilterProxy的 <filter-name> 一致
  4. 若不一致,则会抛出:NoSuchBeanDefinitionException. 因为 Shiro 会来 IOC 容器中查找和 <filter-name> 名字对应的 filter bean.
  5. -->
  6. <bean id="abc" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">
  7. <property name="securityManager" ref="securityManager"/>
  8. <property name="loginUrl" value="/login.jsp"/>
  9. <property name="successUrl" value="/list.jsp"/>
  10. <property name="unauthorizedUrl" value="/unauthorized.jsp"/>
  11.  
  12. <!--
  13. 配置哪些页面需要受保护
  14. 以及访问这些页面需要的权限
  15. 1). anon 可以被匿名访问
  16. 2). authc 必须认证(即登录)后才可以访问的页面
  17. -->
  18. <property name="filterChainDefinitions">
  19. <value>
  20. /login.jsp = anon
  21.  
  22. # everything else requires authentication:
  23. /user.jsp = authc
  24. </value>
  25. </property>
  26. </bean>

这样,就自定义了名称(不推荐,第一种默认即可)

配置ShiroFilter需要注意的问题(Shiro_DelegatingFilterProxy)的更多相关文章

  1. spring集成shiro报错解决(no bean named 'shiroFilter' is defined)

    引言: 本人在使用spring集成shiro是总是报“no bean named 'shiroFilter' is defined”,网上的所有方式挨个试了一遍,又检查了一遍, 还是没有解决,最后,抱 ...

  2. spring与shiro配置详解

    1.加入shiro相关依赖的jar包 pom.xml部分内容如下: <dependency> <groupId>org.apache.shiro</groupId> ...

  3. springmvc+shiro认证框架配置

    1,在web.xml中配置fiter,如下所示 <!-- shiro的filter --> <!-- shiro过虑器,DelegatingFilterProxy通过代理模式将spr ...

  4. shiro配置

    web.xml <!-- Shiro Filter is defined in the spring application context: --> <!-- 1. 配置 Shir ...

  5. springMVC集成 -- shiro(配置)

    备注:文中配置基本来自尚硅谷视频教程,也可自行参照shiro官方教程:http://shiro.apache.org/spring.html 1.首先通过maven导入shiro相关依赖jar包,修改 ...

  6. shiro配置参考(二)可以和mybatis的配置放在一个文件中(不建议这样,可以拆分开来,注意相关配置即可)

    <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...

  7. Shiro_DelegatingFilterProxy

    1.DelegatingFilterProxy实际上是Filter的一个代理对象.默认情况下,Spring会到IOC容器中查找与<filter-name>对应的filter bean.也可 ...

  8. shiro:注解配置(五)

    基于[shiro集成spring]项目改造 引入相关依赖环境 <!--AOP的jar包--> <dependency> <groupId>org.aspectj&l ...

  9. SpringBoot整合shiro系列-SpingBoot是如何将shiroFilter注册到servlet容器中的

    一.先从配置类入手,主要是@Bean了一个ShiroFilterFactoryBean: @Data @Configuration @Slf4j @EnableConfigurationPropert ...

随机推荐

  1. 20175215 2018-2019-2 第七周java课程学习总结

    第八章 常用实用类 8.1 String类 Java专门提供了用来处理字符序列的String类.String类在java.lang包中,由于java.lang包中的类被默认引入,因此程序可以直接使用S ...

  2. Mysql 中需不需要commit

    摘自:https://blog.csdn.net/zzyly1/article/details/81003122 mysql在进行增删改操作的时候需不需要commit,这得看你的存储引擎, 如果是不支 ...

  3. C# 截取屏幕局部

    //截取全屏图象 private void btnFullScreen_Click(object sender, EventArgs e) { //创建图象,保存将来截取的图象 Bitmap imag ...

  4. leetcode-easy-dynamic-198 House Robber-NO

    mycode 思路: a:1 2 3 4 5 6 7 8 9 f(9) =max( f(7) + a9 ,f(8)) 前一步.前两步 至于前三步 f(9) = f(6)+ a9,但其实f(7)在求值的 ...

  5. vue问题四:富文本编辑器上传图片

    vue使用富文本编辑器上传图片: 我是用的是wangEditor 富文本编辑器 demo:http://www.wangeditor.com/ 1).安装依赖:npm install wangedit ...

  6. MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications

    1. 摘要 作者提出了一系列应用于移动和嵌入式视觉的称之为 MobileNets 的高效模型,这些模型采用深度可分离卷积来构建轻量级网络. 作者还引入了两个简单的全局超参数来有效地权衡时延和准确率,以 ...

  7. Git-Runoob:Git 查看提交历史

    ylbtech-Git-Runoob:Git 查看提交历史 1.返回顶部 1. Git 查看提交历史 在使用 Git 提交了若干更新之后,又或者克隆了某个项目,想回顾下提交历史,我们可以使用 git ...

  8. redhat下配置SEED DVS6446开发环境3

    1.运行arm_v5t_le-gcc,报错为: 64bit的Linux操作系统,无法运行32bit的应用程序 /lib/ld-linux.so.2: bad ELF interpreter: No s ...

  9. WPF Prism Request Navigate activation error

    其他测试项目时没有问题,但是有些项目有时候导航一直报错误! Referring the StockTraderRI, I created a popup region in my shell infB ...

  10. PyCharm安装+破解

    PyCharm 是一款功能强大的 Python 编辑器,具有跨平台性,鉴于目前最新版 PyCharm 使用教程较少,为了节约时间,来介绍一下 PyCharm 在 Windows下是如何安装的. 这是 ...