DelegatingFilterProxy(委派拦截代理)(五)

集成Spring在这篇文章中说到

ShiroFilter这个bean id必须和web.xml文件中配置的DelegatingFilterProxy的<filteName>一致
如果不一致会在项目启动的时候报错,因为Shiro会在IOC中查找名字对应的Bean
在这里插入图片描述
带你们涨涨见识(源码)
1.首先进去org.springframework.web.filter.DelegatingFilterProxy这个源码找到DelegatingFilterProxy.initDelegate(初始化)方法 ,找到之后打个断点启动项目看看

在这里插入图片描述
2.找见targetBeanName,如果Bean没有的话,他可不就会抛出异常吗?然后点进去targetBeanName
在这里插入图片描述
3.找见setTargetBeanName方法
在这里插入图片描述
DelegatingFilterProxy实际上是Filter 的一个代理对象,默认情况下Spring会到Ioc容器查找和filter-name 对应的那个Bean,也可以通过targetBeanName的初始化参数来配置filter-name 这个Bean的id

仅是测试,我想应该没人会闲的没事干去配置,这样启动项目也不会报错

applicationContext.xml
<bean id="abc" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">
        <property name="securityManager" ref="securityManager"/>
        <property name="loginUrl" value="/login.jsp"/>
        <property name="successUrl" value="/list.jsp"/>
        <property name="unauthorizedUrl" value="/unauthorizedUrl.jsp"/>
        <property name="filterChainDefinitions">
            <value>
                /login.jsp=anon <!--表示这个页面不会拦截,其他页面访问的话回拦截并且拦截完会重定向到login.jsp-->
                /**=authc <!--除了login.jsp页面之后任何页面访问都需要认证-->
            </value>
        </property>

    </bean>
web.xml
<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>
     <init-param>
     <param-name>targetBeanName</param-name>
      <param-value>abc</param-value>
      </init-param>
  </filter>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Peak_Gao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值