Shiro+SpringBoot 时,anon配置的匿名路径被拦截,自定义配置类走过的坑

举报
tea_year 发表于 2021/12/22 23:01:41 2021/12/22
【摘要】 最开始一直不去自定配置类,究其原因发现是少了: /** * Shiro配置类 */@Configuration 少了@Configuration,这个注解配置。 一路顺畅的走了下来:  是不是要美滋滋的走上康庄大道了呢? 发现: anon,匿名放行机制不管用哦。怎么回事呢? 修改成了: //放行页面; ...

最开始一直不去自定配置类,究其原因发现是少了:


  
  1. /**
  2. * Shiro配置类
  3. */
  4. @Configuration

少了@Configuration,这个注解配置。

一路顺畅的走了下来:

 是不是要美滋滋的走上康庄大道了呢?

发现:

anon,匿名放行机制不管用哦。怎么回事呢?
 

修改成了:


  
  1. //放行页面;
  2. filterMap.put("/testThymeLeaf","anon");
  3. //拦截某个目录下的所有页面;
  4. filterMap.put("/*","authc");

再配置shiro的时候,如下代码要注意:

1、下述代码中必须是LinkedHashMap 而不能是HashMap。

2、anon定义必须在authc之前

否则anon定义不生效

怎么还不行呢?

anon配置的匿名路径被拦截

主要原因:配置过滤器集合时使用了HashMap

Map<String,String> filterMap=new HashMap<>();
 

正确代码如下:应该使用LinkedHashMap

Map<String,String> filterMap=new LinkedHashMap<>();
 

面试题时刻:

为什么这里用LinkedHashMap?

划重点了:

(一)HashMap取值--->不是按照插入顺序


  
  1. HashMap<String,Integer> hm=new HashMap<String, Integer>();
  2. hm.put("大学语文",3);
  3. hm.put("英语",1);
  4. hm.put("音乐鉴赏",5);
  5. hm.put("数学",2);
  6. hm.put("形式政策",4);
  7. for (Map.Entry<String ,Integer> entry:hm.entrySet()){
  8. System.out.println(entry.getKey()+" : "+entry.getValue());
  9. }

(二):LinkedHashMap的取值--->是按照插入取值


  
  1. LinkedHashMap<String,Integer> lhm=new LinkedHashMap<String,Integer>();
  2. lhm.put("化学",1);
  3. lhm.put("生物",2);
  4. lhm.put("物理",3);
  5. lhm.put("语文",4);
  6. lhm.entrySet();
  7. for (Map.Entry<String,Integer> entry:lhm.entrySet()){
  8. System.out.println(entry.getKey()+" : "+entry.getValue());
  9. }

 

文章来源: aaaedu.blog.csdn.net,作者:tea_year,版权归原作者所有,如需转载,请联系作者。

原文链接:aaaedu.blog.csdn.net/article/details/104725640

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。