美文网首页
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