作者:Java实用技术

 

Swagger用于开发期间前端和后端API上的交流使用,请注意是开发期间也就是开发环境,测试环境也可以使用,但是生产环境就不需要使用了,因为生产环境前端已经和后端打通了就不需要在使用Swagger了,如果生产环境没有关闭Swagger有啥后果?这要看你写的程序的安全性了,一般swagger都是用于公司内部项目,一般安全防护都不高(稍微有点安全性就是加个密码),如果swagger暴露出来只要知道这个地址就能访问的话,那么你的api彻彻底底的暴露出去了,对于一些人能够从api中能够看出一些端倪,从而危害生产环境程序,还有一般swagger中都有一些为了便于开发调试的一些小后门比如一些mock接口,这些接口暴露出去危害非常大。

关闭Swagger有两种方式:

  • 方式一:在Swagger2Config上使用@Profile注解标识,@Profile({"dev","test"})表示在dev和test环境才能访问swagger-ui.html,prod环境下访问不了

  • 方式二:在Swagger2Config上使用@ ConditionalOnProperty注解,@ConditionalOnProperty(name = "swagger.enable", havingValue = "true")表示配置文件中如果swagger.enable =true表示开启。所以只需要在开发环境的配置文件配置为true,生产环境配置为false即可。

@Configuration
@EnableSwagger2
//@Profile({"dev","test"})
@ConditionalOnProperty(name = "swagger.enable", havingValue = "true")
public class Swagger2Config {

}

这两种方式我一般使用第一种方式,因为第二种方式还要在每个环境文件中去配置,还要维护此值;Swagger一般用于开发和测试环境,所以直接限制Swagger启用的环境为dev和test即可,这样也不需要再维护配置文件了。

InteliJ IDEA 2019.03.03最新激活jetbrains-agent.jar

1.将jetbrains-agent.jar也放到InteliJ IDEA中的bin目录下。

听说你在生产环境下还没关闭Swagger2,算你猛_ide2.配置VM Options,通过Help菜单 -> Edit Custom VM Options。

听说你在生产环境下还没关闭Swagger2,算你猛_java_02

在文件中最后一行添加如下配置,如果是Windows电脑就写你自己电脑jetbrains-agent.jar实际放入的绝对路径,如 -javaagent:D:\\\xxx\jetbrains-agent.jar。

-javaagent:/Applications/IntelliJ IDEA.app/Contents/bin/jetbrains-agent.jar

听说你在生产环境下还没关闭Swagger2,算你猛_spring_03

也可以直接编辑idea.vmoptions文件增加-javaagent配置,不过建议使用上面菜单的配置方式。

听说你在生产环境下还没关闭Swagger2,算你猛_spring_04

3.重启IDEA,选择License Server, 输入最新的值为 http://fls.jetbrains-agent.com, 点击Test Connection 或者 Close即可。本方法亲测有效,已经使用了一段时间仍然有效。

听说你在生产环境下还没关闭Swagger2,算你猛_生产环境_05