springboot-shiro项目集成swagger2
集成版本:
- SpringBoot: 2.1.6.RELEASE
- Shiro: 1.4.0
- Swagger2: 2.8.0
依赖
<!-- shiro -->
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-spring</artifactId>
<version>1.4.0</version>
</dependency>
<dependency>
<groupId>org.crazycake</groupId>
<artifactId>shiro-redis</artifactId>
<version>3.2.2</version>
</dependency>
<dependency>
<groupId>com.github.theborakompanioni</groupId>
<artifactId>thymeleaf-extras-shiro</artifactId>
<version>2.0.0</version>
</dependency>
<!-- swagger -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.8.0</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.8.0</version>
</dependency>
swagger2配置类
@EnableSwagger2
public class Swagger2Config {
@Bean
public Docket api(){
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.basePackage("com.jiay.autho"))
.paths(PathSelectors.any())
.build();
}
private ApiInfo apiInfo(){
return new ApiInfoBuilder()
.title("Autho-api文档")
.description("权限系统api文档")
//服务条款网址
.termsOfServiceUrl("")
.version("1.0")
.contact(new Contact("JIAY","https://gladitor.github.io/myblog/","eicool110@outlook.com"))
.build();
}
}
shiro配置
shiro中添加swagger的放行,否则无法访问swagger-ui.html
//swagger放行配置
filterChainDefinitionMap.put("/swagger-ui.html", "anon");
filterChainDefinitionMap.put("/swagger/**", "anon");
filterChainDefinitionMap.put("/swagger-resources/**", "anon");
filterChainDefinitionMap.put("/v2/**", "anon");
filterChainDefinitionMap.put("/webjars/**", "anon");
filterChainDefinitionMap.put("/configuration/**", "anon");
//必须加以下配置,否则无法正常访问swagger中接口内容
filterChainDefinitionMap.put("/configuration/security", "anon");
filterChainDefinitionMap.put("/configuration/ui", "anon");
ISSUE
按上面配置可正常访问swagger-ui.html,并能正常使用swagger。
下面列出swagger集成中配到的几个问题:
- Unable to infer base url.
原因是shiro放行中配置不对,需要按【//swagger放行配置】处配置。 - 按网上的常规配置后能访问swagger-ui.html但接口内容无法正常查看及测试
原因是shiro放行配置不完全,需要加上实例中shiro放行配置最后两行。关于这两行有疑问的朋友参考下面shiro通配符说明。
shiro通配符说明
? 匹配单个字符,正确路径/admin, 那么/admin?=authc可以匹配admin + 单个字符,admin12就不能匹配
* 能匹配任意字符,admin,admin1, admin12, 都可以匹配,多层路径不能匹配,比如admin12/12
** 匹配多层路径,admin/** 能匹配admin/1222/12112...., 但是admin12/1545不能匹配
欢迎来访
- 有问题欢迎留言或加交流qq:825121848
- 转载请注明出处
- 请小编喝茶~
← 事务 DataX --alibaba →