springboot + shiro 静态资源拦截放行失效
程序员文章站
2022-07-10 18:04:03
...
今天springboot 集成 shiro 的时候发现有的静态资源被放行,有的却被拦截了,先上filter代码
@Bean
public ShiroFilterFactoryBean shiroFilter(DefaultWebSecurityManager securityManager){
ShiroFilterFactoryBean filter = new ShiroFilterFactoryBean();
// 过滤器就是shiro就行权限校验的核心,进行认证和授权是需要SecurityManager的
filter.setSecurityManager(securityManager);
LinkedHashMap<String, Filter> filtersMap = new LinkedHashMap<>();
//配置自定义登出 覆盖 logout 之前默认的LogoutFilter
filtersMap.put("logout", myLogoutFilter());
filter.setFilters(filtersMap);
Map<String,String> filterMap = new hashMap<>();
filterMap.put("/getCode","anon");
filterMap.put("/login","anon");
filterMap.put("/css/**","anon");
filterMap.put("/js/**","anon");
filterMap.put("/images/**","anon");
filterMap.put("/lib/**","anon");
filterMap.put("/meeting/**","anon");
//logout是shiro提供的过滤器,这是走自定义的 shiroLogoutFilter 上面有配置
filterMap.put("/logout", "logout");
filterMap.put("/**","authc");
filter.setFilterChainDefinitionMap(filterMap);
filter.setLoginUrl("/login");
//设置未授权访问的页面路径
filter.setUnauthorizedUrl("/login");
return filter;
}
上debug图
这是因为 HashMap 是无序的,所以/** 下面的拦截放行都失效了,只需要把hashMap 改成 有序的 LinkedHashMap即可!
上结果图
大功告成!
上一篇: 开源项目贡献代码流程
推荐阅读
-
浅谈Spring Security 对于静态资源的拦截与放行
-
springboot + shiro 静态资源拦截放行失效
-
【SSM_SpringMVC】学习笔记05拦截器、静态资源放行、RESTFUL风格
-
SSM第三季-SpringMVC-拦截器&静态资源放行&RestFul风格开发
-
SpringBoot+SpringSecurity 不拦截静态资源的实现
-
浅谈Spring Security 对于静态资源的拦截与放行
-
SpringBoot配置静态资源 和 实现拦截器
-
springboot配置WebMvcConfigurationSupport拦截器导致静态资源无法访问的问题
-
springboot2.0以上,静态资源无法访问,及设置拦截器后,login登录页面设置不拦截,还是被拦截到的问题
-
SpringBoot 学习——静态资源和拦截器处理