星球项目模板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个评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
柒木
下载 APP