IniWebEnvironment中的FilterChainResolver加载过程分析

IniWebEnvironment中,有两个shiro中最重要的对象,WebSecurityManager和FilterChainResolver,今天我们来看看FilterChainResolver是如何加载的。


1步,[urls]这个Section,是filterChainResolver的重点

2步,[filters]已经不提倡被使用,替换的方法是放到[main]Section中进行配置

IniFilterChainResolverFactory是个抽象工场,最终会调用它的实例方法createInstance()。




看到了吧,直接new出来几个重要的对象,AntPathMather是FilterChainResolver的核心之一,是用来进行路径匹配的,像spring mvc, struts2什么的,都有类似的类。


看这个addDefaultFilters()方法,这个方法会加载shiro默认的一些filte,shiro官网有一个列表,我们去看方法实现。





看明白了吧,就是在这里加载这些defaultFilter的。

我们再回到IniFilterChainResolverFactory.bindChains()方法


1步,获取所有的filter,filter会被更早的WebSecurityManager给初始化创建,我们下一次再说WebSecurityManager。

2步,注册filter,其实就是像一个map中添加这个filter,key是filter名字,这些filter都实现了nameable接口。

3步,就是创建具体的filterChain了,参数section专指[urls]这一块内容,section就是个map,会遍历这个map,key就是你配置的path,value就是安全规则了,比如

/system=authc, roles[admin, super], perms[security:*]

key就是/system,解析value,根据filterName,如authc, roles, perms绑定具体的filter

Ok,完了。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值