官方文档配置权限:https://doc.xiaominfo.com/v2/documentation/accessControl.html#_3-5-1-%E7%94%9F%E4%BA%A7%E7%8E%AF%E5%A2%83%E5%B1%8F%E8%94%BD%E8%B5%84%E6%BA%90
通常有时候我们碰到的问题如下:
在开发Knife4j功能时,同很多开发者经常讨论的问题就是在生产环境时,屏蔽或者去除Swagger的文档很麻烦
系统部署生产环境时,我们想屏蔽Swagger的文档功能,不管是接口或者html文档
通常我们有时候需要生产环境部署后,又需要Swagger的文档调试功能,辅助开发者调试,但是存在安全隐患,没有对Swagger的资源接口过滤
等等
针对以上两种情况,Knife4j基于Servlet体系提供了过滤Filter功能,如果开发者使用Spring Boot开发框架进行开发的话,只需在application.properties或者application.yml配置文件中配置相关属性即可方便的解决上面的问题,不用删除Springfox-swagger的jar包或者删除相关代码等复杂的操作,提升开发体验。
当我们部署系统到生产系统,为了接口安全,需要屏蔽所有Swagger的相关资源。
项目的pom.xml中引入Knife4j的依赖包,代码如下:
<dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-spring-boot-starter</artifactId><version>2.0.9</version>
</dependency>
如果使用SpringBoot框架,只需在application.properties或者application.yml配置文件中配置
knife4j:# 开启增强配置 enable: true# 开启生产环境屏蔽production: true
配置此属性后,所有资源都会屏蔽输出.
后面发现禁用以后通过 依旧还能访问拿到json文件。 可能是个bug。
http://localhost:8080/v2/;/api-docs?group=2.X%E7%89%88%E6%9C%AC
后面发现只需要在配置类加上。.enable(false) 即可完全禁用。
@Configuration
@EnableSwagger2WebMvc
public class Knife4jConfiguration {@Bean(value = "defaultApi2")public Docket defaultApi2() {Docket docket=new Docket(DocumentationType.SWAGGER_2).apiInfo(new ApiInfoBuilder()//.title("swagger-bootstrap-ui-demo RESTful APIs").description("# swagger-bootstrap-ui-demo RESTful APIs").termsOfServiceUrl("http://www.xx.com/").contact("xx@qq.com").version("1.0").build()).enable(false)//分组名称.groupName("2.X版本").select()//这里指定Controller扫描包路径.apis(RequestHandlerSelectors.basePackage("com.github.xiaoymin.knife4j.controller")).paths(PathSelectors.any()).build();return docket;}
}