762 Star 6.6K Fork 1.4K

GVP萧明 / knife4j

 / 详情

3.0.2 配置生产环境屏蔽后,依然可以访问部分接口

已完成
创建于  
2020-12-03 16:44

3.0.2 配置生产环境屏蔽后,依然可以访问/v3/api-docs接口!

评论 (5)

lianjiatech 创建了任务
lianjiatech 关联仓库设置为萧明/knife4j
萧明 添加了
 
enhancement
标签
展开全部操作日志

兄弟,啥时候能修复好呀?这种裸接口按原则生产环境是无法上线的。

@lianjiatech 其实Knife4j提供的生产屏蔽策略是基于Filter的,就功能来说,没有什么问题,能达到实际需要的效果,但对于系统来说,因为是基于Filter体系,性能难免有所损耗,对系统不利。

其实开发者应该考虑基于Spring Boot提供的@Conditional条件注解注入或者@Profile环境注解来区分实际生产环境和测试开发环境的区别。

使用Spring Boot体系提供的根据条件来注入更加合理一些,在生产环境中,也不需要初始化Swagger的配置,没有将实体Bean注入在实体中,Swagger也不会初始化,那么接口访问就是404,也就达到了目的。

唯一的缺陷是对外提供的静态html资源无法做到屏蔽,但是这个已经无伤大雅了。因为接口已经404了

这个思路我也很认可,不过有一个问题。因为我引入的是3.0.2版本,使用的时候并不需要手动再配置Docket 的Bean。那么基于Spring Boot提供的@Conditional条件注解注入或者@Profile环境注解应该加在哪里呢?

@lianjiatech

贴一段springfox的基于Spring Boot的源码吧,你看看就能明白:

@Configuration
@EnableConfigurationProperties(SpringfoxConfigurationProperties.class)
@ConditionalOnProperty(value = "springfox.documentation.enabled", havingValue = "true", matchIfMissing = true)
@Import({
    OpenApiDocumentationConfiguration.class,
    SpringDataRestConfiguration.class,
    BeanValidatorPluginsConfiguration.class,
    Swagger2DocumentationConfiguration.class,
    SwaggerUiWebFluxConfiguration.class,
    SwaggerUiWebMvcConfiguration.class
})
@AutoConfigureAfter({ WebMvcAutoConfiguration.class, JacksonAutoConfiguration.class,
    HttpMessageConvertersAutoConfiguration.class, RepositoryRestMvcAutoConfiguration.class })
public class OpenApiAutoConfiguration {

}

输入图片说明

你如果不创建Docket对象,springfox也是提供了开关的

springfox:
  documentation:
    enabled: false

懂了,感谢大佬

萧明 里程碑设置为Knife4j 2.0.9版本
萧明 任务状态待办的 修改为已完成

登录 后才可以发表评论

状态
负责人
里程碑
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
开始日期   -   截止日期
-
置顶选项
优先级
参与者(2)
118100 xiaoym 1578918321
Java
1
https://gitee.com/xiaoym/knife4j.git
git@gitee.com:xiaoym/knife4j.git
xiaoym
knife4j
knife4j

搜索帮助