Shiro对Servlet容器的FilterChain进行了代理,即ShiroFilter
在继续Servlet容器的Filter链的执行之前,通过
ProxiedFilterChain对Servlet容器的FilterChain进行了代理,即
先走Shiro自己的Filter体系,然后才会委托给Servlet容器的
FilterChain进行Servlet容器级别的Filter链执行Shiro的
ProxiedFilterChain执行流程,先执行Shiro自己的Filter链;再执
行Servlet容器的Filter链(即原始的Filter)而ProxiedFilterChain
是通过FilterChainResolver根据配置文件中[urls]部分是否与请求
的URL是否匹配解析得到的。即传入原始的chain得到一个代理的
chain。Shiro内部提供了一个路径匹配的FilterChainResolver实现:
PathMatchingFilterChainResolver其根据[urls]中配置的url模式
(默认Ant风格)即根据过滤器链和请求的url是否匹配来解析得到
配置的过滤器PathMatchingFilterChainResolver内部通过
FilterChainManager。维护过滤器链比如
DefaultFilterChainManager。