Swagger перенаправляется на страницу входа в Spring Security в приложении Spring Boot - PullRequest
0 голосов
/ 06 апреля 2020

Я реализовал Spring Security в приложении Spring boot2. После этого я попытался реализовать Swagger в том же приложении. На весенней странице конфигурации безопасности я реализовал игнорирование webSecurity, а также реализовал опцию allowALL для swagger url. Тем не менее, когда я пытаюсь получить какой-либо сервис через URL-адрес swagger, он перенаправляет на страницу журнала безопасности Spring.

Ниже приведены реализация и выходные данные конфигурации безопасности Spring и конфигурации swagger:

@Configuration

@EnableWebSecurity

public class SecurityConfig extends WebSecurityConfigurerAdapter{

    @Autowired
    UserDetailsService userDetailsService;

    public SecurityConfig() {
        // TODO Auto-generated constructor stub
    }

    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {

        auth.userDetailsService(userDetailsService)
            .passwordEncoder(NoOpPasswordEncoder.getInstance());
    }

    /**
     * Example of Authorization
     */
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        // TODO Auto-generated method stub
        http.authorizeRequests()
            .antMatchers("/v2/api-docs", 
                "/configuration/ui",
                "/swagger-resources/**", 
                "/configuration/**", 
                "/swagger-ui/**", 
                "/webjars/**")
            .permitAll()
            .anyRequest()
            .authenticated()
            .antMatchers("/allemployees")
            .hasAnyAuthority("USER", "ADMIN")
            .antMatchers("/getuser/*")
            .hasAuthority("ADMIN")
            .and()
            .formLogin()
            .and()
            .csrf()
            .disable()

            ;
    }

    @Override
    public void configure(WebSecurity web) throws Exception {

        //web.ignoring().antMatchers("/swagger*/**");
        web.ignoring()
        .antMatchers("/v2/api-docs", 
                "/configuration/ui",
                "/swagger-resources/**", 
                "/configuration/**", 
                "/swagger-ui.html/**", 
                "/webjars/**")
        ;

    }
}

@Configuration

@EnableSwagger2

public class SwaggerConfig {

    public SwaggerConfig() {
        // TODO Auto-generated constructor stub
    }

    @Bean
    public Docket getDocket() {
        return new Docket(DocumentationType.SWAGGER_2)
                .select()
                .apis(RequestHandlerSelectors.any())              
                .paths(PathSelectors.any())    
                .build();
    }
}

Вывод [Swagger перенаправляется на страницу входа в систему безопасности Spring] [1]

[1]: https://i.stack.imgur.com/eekLR.jpgenter image description here

...