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

简介: 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>
目录
相关文章
|
7月前
|
Java
反射&代理
反射&代理
63 0
|
5月前
|
Java Spring
AopContext.currentProxy();为什么能获取到代理对象
AopContext.currentProxy();为什么能获取到代理对象
216 0
|
6月前
|
JavaScript API
怎么进行代理
怎么进行代理
71 1
|
Cloud Native Java Go
gPRC代理方式详细介绍
gPRC代理方式详细介绍
139 0
|
设计模式 Java
反射和代理
反射和代理
76 0
代理
概念 代理:代替处理,又称委托模式。 实现:为目标对象提供(包装)了一个代理,这个代理可以控制对目标对象的访问。外界不直接访问目标对象,而是访问代理对象,再由代理对象调用目标对象。
568 0
|
网络协议 Shell Linux
【详解委派攻击】3.基于资源的约束性委派
在windows server 2012开始加入了新功能(基于资源的约束性委派RBCD),而且不需要域管理员去设置相关属性,RBCD把设置委派的权限赋予了机器自身,机器自己可以决定谁可以被委派来控制我,也就是说机器自身可以直接在自己账户上配置msDS
650 0
Proxy代理数据拦截方法
**Proxy** 对象用于创建一个对象的代理,从而实现基本操作的拦截和自定义(如属性查找、赋值、枚举、函数调用等)。
185 0
Proxy代理数据拦截方法
|
Kubernetes Docker 容器
代理配置
代理配置
196 0