swagger2安全问题

项目集成swagger2后,发现一个问题,就是项目无论是在测试环境,本地环境,还是生产环境,都能查看到swagger的接口文档,但是接口个不应该这样对外暴露,这样就涉及到了安全问题。
于是我做了对swagger进行安全控制的实现。
1 在配置文件中配置
#swagger配置
swagger.show=true

  一般项目有三个配置文件,分别为生产,测试及本地,在本地设置 swagger.show=true 其他为false

2 在代码中进行获取配置文件的值并评断

@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Value("${swagger.show}")
 private boolean swaggerShow;

 @Bean
 public Docket createRestApi() {
     return new Docket(DocumentationType.SWAGGER_2)
             .enable(swaggerShow)
             .apiInfo(apiInfo())
             .select()
             .apis(RequestHandlerSelectors.basePackage("com.unitrans.agency"))
             .paths(PathSelectors.any())
             .build();
 }
}

@Configuration
public class WebConfig implements WebMvcConfigurer {

 @Value("${swagger.show}")
 private boolean swaggerShow;
 @Override
 public void addResourceHandlers(ResourceHandlerRegistry registry) {
     if (this.swaggerShow) {
         registry.addResourceHandler("/statics/**").addResourceLocations("classpath:/statics/");
         // 解决 SWAGGER 404报错
         registry.addResourceHandler("/swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/");
         registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
     }
 }
}

这样swagger的安全问题就解决了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容