shiro的anon失效问题

前面可能会记我的一些废话,等不及的小伙伴可以直接跳到 3.最终解决

1.前情提要(发现问题)

记一次shiro出现nano失效问题,出现原因是我在过滤链中新增了不需要验证的的路劲,好家伙没有任何效果,该报401的照样报401,更有甚者,我原本的登录也变成401被拦截下来验证的,整一个就是vip通道被关,都老老实实去走普通通道。

配置了但失效

甚至login也失效了

原本是能成功的(不新增规则之前)

2.解决问题

那要怎么办呢?【把新增的逻辑删掉,不新增这个功能了,这样谁都不知道我出bug-了–》当然这只是开个玩笑,该加的还是要加,(比如说我,这注册要是没法实现,那有登录什么事)】

2.1 debug

通过debug发现咱的登录请求确实被拦截了,需要通过我自定义的过滤规则进行认证,【好家伙我整个人就裂开了,咋了anon是被吃了吗】。

2.2 回去看我们的过滤链

发现也没**‘写错’**啊,anon的都写在myShiro(这个是我自定义的过滤器)之前,(熟悉的小伙伴可能这时候已经发现问题所在了,但那时的我裂开了,满脑子只看得到我写了anon了)

2.3 接着查资料,思考,debug

终于让我逮到了错误的小尾巴

上面我们也有提到anon(无需认证即可访问)必须写在所有需要认证的规则之前,比如本案例中的“myShiro”。那么这个之前是怎么个之前法呢?是像上面我写的一样,在myShiro之前put就可以了吗。【并不是】。

我们可以看到FilterChainDefinitionMap的底层结构是Map,那提到map你们会想到什么。【无序,不可重复!!!】,对了就是这个【无序性!无序性!无序性!】重复说三次以表尊重。好了,小伙伴们现在就会知道问题出现在哪了,对【无序】,既然无序,你什么时候把规则put进去都是没啥意义的,他是根据hash散列确定在map中的位置的(具体怎么做可以查查资料看看,挺重要的一个知识,这里就不详细讲了)。而你过滤链在执行的时候,可就不会帮你考虑散列不散列的问题,他直接给你遍历map,取出相应的拦截规则。下面是我输出的遍历。【至此总算找到问题的

好了把握住问题的所在,该怎么解决呢,

把map变为有序的就可以了,说到有序自然而然的我们就可以想到LinkedHashMap,把HashMap改掉就行了

3.最终解决

把写的规律规则的存储结构改为LinkedHashMap即可,原因是HashMap无序,不会按你存储的顺序存储数据,而是通过hash等一系列方法确认存储位置,所以使用LinkedHashMap即可有序存储

成功进入注册页面

看看源码

其实我们也可以看到人家默认使用的就是LinkedHashMap【好的吧,我的锅,顶锅跑路】

4.小结

4.1 其实有很多原理我们是知道的,比如你一定知道【anon要写在需要认证的规则之前,hashMap是无序的】,但联系起来想就不一定一下子就能想到了,这个东西除了多积累经验,多学习,多思考,也没有其他办法

4.2 还有我们在自定义配置类的时候,最好去看看那人家原本是什么样子的,然后能照搬的就照搬,接着再去修改具体细节

shiro的anon失效问题相关推荐

  1. shiro的anon部分失效

    公司项目使用了shiro做了登录认证,直接从公司以前的shiro模块直接复制过来用.所有气象接口无需登录,于是做了过滤配置,但是后来发现部分气象接口依然需要登录,没有过滤掉,anon失效了 anon表 ...

  2. springboot结合shiro中anon配置失效

    网上看了许多anon的文章,但是大部分anon失效的原因都是需要使用 LinkedHashMap来作为拦截链,但是本人开发过程中已经使用了LinkedHashMap 但是anon配置还是失效,但还是被 ...

  3. shiro权限拦截失效

    shiro权限拦截失效 shiro版本:1.7.1 原因1:配置错误 将拦截路径/* 修改为/** 就好了 拓展: 若有拦截失效的时候可以查看shiro源码, PathMatchingFilterCh ...

  4. 记spring boot + shiro 认证,anon失效的问题的一种解决方式

    Map<String, String> filterMap = new LinkedHashMap<>(); //filterMap.put("使用更全的路径&quo ...

  5. shiro修改html不生效,shiro中anon配置不生效

    再配置shiro的时候,如下代码要注意: 1.下述代码中必须是LinkedHashMap 而不能是HashMap. 2.anon定义必须在authc之前 否则anon定义不生效 @Bean publi ...

  6. shiro中anon配置不生效

    再配置shiro的时候,如下代码要注意: 1.下述代码中必须是LinkedHashMap 而不能是HashMap. 2.anon定义必须在authc之前 否则anon定义不生效 @Beanpublic ...

  7. Java Shiro 设置 anon 无效

    我在这里定义 /user/login 路径设置为anon 但还是会经过过滤器 解决方案如下: 过滤规则map要为LinkedHashMap

  8. shiro+jwt登录认证anon配置无效

    shiro+jwt登录认证anon配置无效 需求:使用shiro+jwt进行登录认证,希望可以自定义一些不需要认证的接口(登录接口等),其他统统交给jwtFilter进行token认证 原来shiro ...

  9. shiro权限管理基本原理和实现的整理

    shiro权限管理基本原理和实现的整理 引言:这两天学习了一个对权限管理的新的框架shiro,在这里做一个总结,既为了帮助有需要的人,也方便自己以后来回顾. 本篇文章主要针对下面几个关键点来说明: 1 ...

最新文章

  1. c++ 在哪里找文档来看_FPX双C十四连败引热议!Doinb:我再也不跟LWX双排了
  2. Nginx+Tomcat+memcached负载均衡实现seccion存储
  3. linux之Vim使用
  4. 使用EasyExcel导入导出Excel报表-JAVA解析Excel工具
  5. Linux下的系统排错以及无图形修改root密码
  6. mysql binlog DDL_mysql一个事务中有DDL语句的binlog情况
  7. MyBatis学习笔记(1)-MyBatis介绍
  8. php10充电宝拆解,【变废为宝拆解】拆解一个正品的小米移动电源10400mAh版
  9. java ee图书管理系统_基于jsp的图书馆管理系统-JavaEE实现图书馆管理系统 - java项目源码...
  10. 三步骤详解张正友标定法
  11. C# 判定素数 高效算法 拉宾米勒算法
  12. python 的statsmodels包,计算Wald tests
  13. 极客星球 | 图像技术在上亿规模实拍图片中的应用
  14. 华芯超算技术负责人分享分布式存储技术核心
  15. 目标跟踪OTB评估指标(OP, CLE, FPS)与matlab代码
  16. 电子商务数据分析的认识
  17. android浏览器插件介绍
  18. 一文看懂:NAS网络存储与SAN、DAS的区别
  19. icomoon 下载及使用
  20. 前端开发_HTML5_CSS部分-背景(background)

热门文章

  1. 你知道PaaS平台的P有多少种写法?
  2. 网站数据常见的获取途径有什么
  3. 如何让一个PNG图片背景透明
  4. 武汉Java程序员工资是否还会增长?工资为什么那么高?
  5. 强制显示U盘隐藏文件
  6. 低代码到底是银弹,还是行业毒瘤?
  7. Python原生服务端签名生成请求订单信息「orderString」
  8. RTX 3090Ti发布!元宇宙平台开放!
  9. CC00010.hadoop——|HadoopImpala.V10|——|Impala.v10|集群实现|负载均衡.v01|
  10. 坐标正反算通用程序(极短篇)