3.0.2 配置生产环境屏蔽后,依然可以访问/v3/api-docs接口!
兄弟,啥时候能修复好呀?这种裸接口按原则生产环境是无法上线的。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
@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
环境注解应该加在哪里呢?
贴一段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
懂了,感谢大佬
登录 后才可以发表评论