学习了这几节Shiro可能,也许大家对DelegatingFilterProxy还不是很了解,其实有一些东西需要去注意,防止在项目中出现这种低级的错误。
首先在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>
</filter>
<filter-mapping>
<filter-name>shiroFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
filter-name的值相当于给org.springframework.web.filter.DelegatingFilterProxy起了一个别名,但是呢需要注意的是需要和applicationContext.xml中的id一致,即:
<bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">
.....
.....
<bean/>
不一致则报错:
原因:Filter在进行初始化的时候,会先找和会到 IOC 容器中查找和 <filter-name> 对应的 filter bean,通过getBean方法就获取到了applicationContext.xml中对应的filter详细的结果请查看源码进行打断点测试。