星球项目模板Knife4j线上问题解决
问题:星球中的项目上线后Knife4j接口文档依旧可以访问的问题,我访问了星球作业中的项目,基本都能打开线上的接口文档。为什么配置@Profile,接口文档还能被访问呢?现在跟着我来解决他。
结论:
1.不升级版本可以在线上环境配置中增加enable:true和production:true配置。
2.升级版本可以什么都不配置,配置代码和v3.0.3一样。启动开发环境就能拒绝访问接口文档。也可以配置enable:true和production:true。两个必须一起配置才能生效。
更多配置可以参考官方文档:3.1 增强模式 | Knife4j (xiaominfo.com)
写不下去了,星球的编辑器太烂了,一个一个字敲的,就这样。大家可以修改一下配置。
第一种方式:
V3.0.3版本
这是星球中大多数用的版本v3.0.3
首先打包项目模拟线上环境启动,配置yml
java -jar .\demo-0.0.1-SNAPSHOT.jar --spring.profiles.active=prod
// dev环境中的配置
spring:
profiles:
active: dev
mvc:
path match:
matching-strategy: ant_path_matcher
访问结果:启动了线上环境依旧还能访问到。

要解决这个问题可以在prod.yml中增加这段配置。
knife4j:
enable: true
production: true
再次访问会发现已经访问不到了。
也可以设置更多。可以在这里查看3.1 增强模式 | Knife4j (xiaominfo.com)
第二种方式:
升级版本
openapi2-4.3.0版本
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-openapi2-spring-boot-starter</artifactId>
<version>4.3.0</version>
</dependency>
启动开发环境后效果如下:

开发环境配置后
knife4j:
enable: true
production: true
效果如下:

得出结论:可以什么都不配置,配置代码和v3.0.3一样。启动开发环境就能拒绝访问接口文档。也可以配置enable:true和production:true。两个必须一起配置才能生效。使用这个版本可以不用配置
mvc:
path match:
matching-strategy: ANT_PATH_MATCHER
openapi3-4.3.0版本
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-openapi3-spring-boot-starter</artifactId>
<version>4.3.0</version>
</dependency>
@Configuration
@Data
@Profile("!prod")
public class Knife4jConfig {
@Bean
public OpenAPI api() {
return new OpenAPI().info(new Info().title("文档标题")
.description("文档描述")
.version("v1.0.0"));
}
@Bean
public GroupedOpenApi publicApi() {
return GroupedOpenApi.builder()
.group("")
.pathsToMatch("/**")
.packagesToScan("com.example.demo.controller")
.build();
}
}
knife4j:
enable: true
production: true
这一版本openapi2-4.3.0版本效果一致,只是配置代码不一样。
效果如下

评论
问答助学
相关内容
0个评论
全部评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论

