在SpringBoot集成Swagger2时,使用shiro做安全拦截时,主要碰到以下几个问题
1.shiro拦截请求时,会把swagger2拦截
2.拦截放开swagger时,也会拦截对应的css、js文件等
经过几次测试在shiroConfig文件中加入一下几个配置就可以了
@Bean
public ShiroFilterFactoryBean shirFilter(SecurityManager securityManager) {
ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean();
shiroFilterFactoryBean.setSecurityManager(securityManager);
//拦截器.
Map<String,String> filterChainDefinitionMap = new LinkedHashMap<String,String>();
// 配置不会被拦截的链接 顺序判断
//配置退出 过滤器,其中的具体的退出代码Shiro已经替我们实现了
filterChainDefinitionMap.put("/login", "anon");
filterChainDefinitionMap.put("/swagger-ui.html","anon");
filterChainDefinitionMap.put("/static/**", "anon");
filterChainDefinitionMap.put("/swagger/**","anon");
filterChainDefinitionMap.put("/webjars/**", "anon");
filterChainDefinitionMap.put("/swagger-resources/**","anon");
filterChainDefinitionMap.put("/v2/**","anon");
filterChainDefinitionMap.put("/**", "authc");
shiroFilterFactoryBean.setLoginUrl("/index");
shiroFilterFactoryBean.setUnauthorizedUrl("/");
shiroFilterFactoryBean.setFilterChainDefinitionMap(filterChainDefinitionMap);
return shiroFilterFactoryBean;
}如果只是出现了头部文件检查swagger的配置文件是否正确,扫描的包位置
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.basePackage("com.infoearth.system.controller"))
.paths(PathSelectors.any())
.build();
}还有在main启动类上加入@EnableSwagger2注解
本文介绍如何解决在SpringBoot项目中集成Swagger2与Shiro时出现的问题,包括Shiro对Swagger相关资源的不当拦截及配置Swagger扫描路径的方法。
753

被折叠的 条评论
为什么被折叠?



