java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > Shiro+SpringBoot anon配置的匿名路径被拦截,自定义配置类

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

作者:张哥编程课

文章主要讲述了在Java配置类中使用`@Configuration`注解的重要性,并通过修改Shiro配置时遇到的问题,强调了使用`LinkedHashMap`而不是`HashMap`的原因,同时,文章还提供了一些面试题和总结,帮助读者更好地理解和应用这些知识

最开始一直不去自定配置类

究其原因发现是少了:

/**
 * Shiro配置类
 */
@Configuration

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

一路顺畅的走了下来

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

发现:

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

修改成了:

 //放行页面;
        filterMap.put("/testThymeLeaf","anon");
        //拦截某个目录下的所有页面;
        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取值--->不是按照插入顺序

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

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

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

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文