美文网首页
shiro中filter源码分析

shiro中filter源码分析

作者: Ninjia11 | 来源:发表于2018-04-29 19:17 被阅读0次

Filter分析

我们写filter 大多数是继承 PathMatchingFilter函数的  看一下大体关系

springboot 是部署到tomcat上的 然后经过层层处理 最后会调用doFilter函数。

首先先理解重要的类 才知道他如何搞事情的

     public class PathMatchingFilterChainResolver implements FilterChainResolver ---根  据url 来匹配对应FilterChain 例如 /update  对应 anno 

    public class DefaultFilterChainManager implements FilterChainManager  --属性有map 存有我们初始化的url和filter的关系

    public class ProxiedFilterChain implements FilterChain  --存有url匹配到的filter的filter 最后会回调dofilter

    

      OncePerRequestFilter ---实现了dofiter函数 里面调用 doFilterInternal

主要看execte方法 这里会得到新的FilterChain 里面有我们的 FilterChainResolver resolver = getFilterChainResolver();就是获取shiro启动时注入的FilterChainResolver

resolver.getChain(request, response, origChain);就是选出匹配到filter 例如anno

FilterChainResolver类存有FilterChainManager 可以动态管理url对应的关系

proxy 方法里面有new了存有我们的filter的ProxiedFilterChain对象 到这里基本结束了,回过头来看,主要dofilter函数 最后调用dofilter

this.filters.get(this.index++).doFilter(request, response, this); 最后回到第二图dofilter上 ,他会调用


因为子类不一样,最后会调用我们继承PathMatchingFilter的方法上

总结:

1.首先调用已注入容器的 AbstractShiroFilter 的doFilterInternal方法。

2.包装request response 调用executeChain 方法获取 新的 包装好的Filterchain 。

3.再次调用dofilter方法AdviceFilter的 doFilterInternal。

相关文章

网友评论

      本文标题:shiro中filter源码分析

      本文链接:https://www.haomeiwen.com/subject/zfqalftx.html