Spring Disable Swagger-UI для производства - PullRequest
0 голосов
/ 21 апреля 2020

Я знаю, как отключить Swagger для производства - мне нужно только добавить аннотацию @Profile ("! Prod") в классе конфигурации:

@Configuration
@EnableSwagger2
@RequiredArgsConstructor
@Profile("!prod")
public class SwaggerConfig {

результат добавления аннотации Но В результате swagger-ui. html все еще доступен в браузере, только его пустое. Интересно, есть ли решение отключить его полностью, чтобы страница не загружалась?

Ответы [ 2 ]

1 голос
/ 21 апреля 2020

это можно сделать просто с помощью Spring-Security, заблокировав URL для производственной среды. Пожалуйста, попробуйте:

Добавить зависимость (если вы используете spring-boot) в pom. xml:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-security</artifactId>
</dependency>

Добавить файл конфигурации:

@Configuration
@Profile("prod")
public class SecurityConfig extends WebSecurityConfigurerAdapter {
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
                .authorizeRequests()
                .antMatchers("/**/swagger-ui.html").denyAll();
    }
}

It отправит 403 запрещенных статуса.

0 голосов
/ 22 апреля 2020

Ладно, @zpavel, это хорошее решение, спасибо. У меня уже была такая весенняя конфигурация безопасности, и когда я добавил вашу, я получил ошибку «@Order на WebSecurityConfigurers должен быть уникальным.», Поэтому я добавил один класс @Order (1), а другой - @Order (2 ). К сожалению .antMatchers ("/ ** / swagger-ui. html"). DenyAll (); отказал во всех запросах даже тем, кто не был чванливым звонком, я не знаю почему.

Но я изменил Ваше решение, и оно сработало для меня:

@Value("${spring.profiles.active}")
private String activeProfile;

@Override
public void configure(HttpSecurity http) throws Exception {
    if(activeProfile.equals("prod")){
        http.authorizeRequests()
                .antMatchers("/something").permitAll()
                .antMatchers("/v2/api-docs", "/configuration/ui", "/swagger-resources/**", "/configuration/**", "/swagger-ui.html", "/webjars/**").denyAll()
                .antMatchers("/something").permitAll()
                .anyRequest().authenticated();
    } else {
        http.authorizeRequests()
                .antMatchers("/something").permitAll()
                .antMatchers("/v2/api-docs", "/configuration/ui", "/swagger-resources/**", "/configuration/**", "/swagger-ui.html", "/webjars/**").permitAll()
                .antMatchers("/something").permitAll() 
                .antMatchers("/something").permitAll()
                .anyRequest().authenticated();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...