Shiro随笔(1:web.xml中的过滤器配置里,spring是如何关联shiro的)

本文详细介绍了如何通过web.xml和spring-shiro.xml文件配置实现Spring与Shiro的安全框架整合。重点展示了DelegatingFilterProxy类的作用及其实现原理,并解释了如何通过ShiroFilterFactoryBean连接Spring与Shiro。

贴上web.xml中的配置信息:

再贴上spring-shiro.xml的配置信息:

在这里可以发现,web.xml中的filter-name和spring-shiro.xml中的Bean的id值是等值关系。这样子,他们就关联起来了。不信??咱们看一下源码。

不管3*7=21,既然该过滤器类能在web.xml中可以配置,那么必然实现了javax.servlet.Filter接口,那么就先定位到org.springframework.web.filter.DelegatingFilterProxydoFilter()方法,如下图:

再定位到该类的initDelegate()方法,如下图:

看到这里,也许你会有疑问。根据"shiroFilter"这个名字,调用getBean()方法的时候,获得的应该是:

org.apache.shiro.spring.web.ShiroFilterFactoryBean这个实例。但是如上图却是SpringShiroFilter实例。不要急嘛,年轻人!!继续由我慢慢给你道来,给你看一张图,如下:

当getBean()方法调用的时候,最终会层层调用到org.apache.shiro.spring.web.ShiroFilterFactoryBean的getObject()方法,这个方法就是连接spring与shiro的桥梁。

就这样子,spring与shiro就真正的关联起来了,这时候就是shiro就可以大显身手了。

转载于:https://my.oschina.net/u/2381372/blog/1204206

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值