Shiro 自定义filter匹配异常

最近忙着研究在 Springboot 上使用 Shiro 的问题。刚好就遇到个诡异事,百度 Google 也没找到啥有价值的信息,几番周折自己解决了,这里稍微记录下。

自定义 Filter

Shiro 支持自定义 Filter 大家都知道,也经常用,这里我也用到了一个自定义 Filter,主要用于验证接口调用的 AccessToken 是否有效。

funny,结果出乎意料,居然登陆接口走了咱们的那个自定义 Filter??黑人问号脸。。。

问题排查 FilterChain

首先检查 Shiro FilterChain 加载的顺序是否异常。

1、集合容器使用 LinkedHashMap,保证的 FilterChain 的顺序。

2、从数据库读取 Filter 时也是按 sort 排序的。

从调试结果来看,加载顺序和数据并没有任何问题,都是正确的。

排除了自身的数据问题,那就要往深处挖掘原因了,有了之前解决 Quartz 问题的经历,这次毫不犹豫就决定跟源码跟踪 Filter 注册到匹配的过程。

Filter 注册

要查明白为何匹配异常,就要先弄清楚咱们的自定义 Filter 是如何注册到 Shiro 的,显然,问题的关键在于 ShiroFilter 返回的 ShiroFilterFactoryBean 这个类中,我们打开看看。很快,我们就锁定了关键 method:






参考文献:Shiro自定义filter匹配异常 - _Hill3

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • [转](http://www.hillfly.com/2017/179.html) 最近忙着研究在 Springb...
    zjk_00阅读 10,542评论 2 9
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,273评论 19 139
  • doGetAuthorizationInfo和doGetAuthenticationInfo 这两个方法虽然名字很...
    Kenny_Yu阅读 5,362评论 1 1
  • 本文包括:1、Filter简介2、Filter是如何实现拦截的?3、Filter开发入门4、Filter的生命周期...
    廖少少阅读 12,102评论 3 56
  • 在拥有了数据获取和存储的能力之后,如何利用好这些数据成为一个问题。本来也一直打算把之前学习的flask框架用起来,...
    wangmengcn阅读 4,030评论 0 1

友情链接更多精彩内容