Advertisement

分析shiro拦截器的filterChainDefinitions配置

阅读量:

对Shiro源码进行分析,查阅了一些相关资料,针对在Shiro框架中配置filterChainDefinitions时遇到的一些小问题,进行如下分析并作为备忘记录。

问题描述:

在配置filterChainDefinitions时,若将/k/**的规则设置在/k/index之前,则/k/index的配置将无法生效。根据相关规则可知:拦截器的优先级是按照从上到下、从左到右的顺序执行的,一旦某个拦截器匹配成功,后续的拦截器将不再执行。

设置过程如下:
1、通过调用ShiroFilterFactoryBean.setFilterChainDefinitions方法获取基础参数,并将其转换为Section键值对形式。其中'='左边为键,右边为值,并存储至filterChainDefinitionMap中。此时使用的是LinkedHashMap结构,具有有序性,因此过滤器的执行顺序也具有先后之分。
2、调用ShiroFilterFactoryBean.getObject方法(该类实现了FactoryBean接口)。Spring在获取ShiroFilterFactoryBean时,实际返回的是该对象的getObject()方法所返回的内容。
3、在createInstance方法中构建了一个FilterChainManager对象,在createFilterCh

全部评论 (0)

还没有任何评论哟~