Разные аутентификации для разных URL - PullRequest
0 голосов
/ 24 марта 2020

Я пытаюсь реализовать аутентификацию http basi c для /basic url и аутентификацию на основе форм для /user url:

@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
    @Bean
    public PasswordEncoder passwordEncoder() {

        return NoOpPasswordEncoder.getInstance();
    }

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

        auth.inMemoryAuthentication()
                .withUser("user")
                .password("user")
                .roles("USER")
                .and()
                .withUser("admin")
                .password("admin")
                .roles("ADMIN")
        ;

    }


    @Configuration
    @Order(1)
    public static class C1 extends WebSecurityConfigurerAdapter {

        @Override
        protected void configure(HttpSecurity http) throws Exception {
            http
                    .antMatcher("/basic/**")
                    .authorizeRequests(authorize -> authorize
                            .anyRequest().hasRole("ADMIN")
                    )
                    .httpBasic();

        }
    }

    @Configuration
    @Order(2)
    public static class C2 extends WebSecurityConfigurerAdapter {

        @Override
        protected void configure(HttpSecurity http) throws Exception {
            http
                    .antMatcher("/user/**")
                    .authorizeRequests(authorize -> authorize
                            .anyRequest().hasRole("USER")
                    )
                    .formLogin();

        }
    }

}

Проблема заключается в том, что когда я перейдя по ссылке /basic и предоставив учетные данные admin/admin во всплывающем окне, я немедленно перенаправлюсь на другую страницу - стандартная форма входа в Spring Security. Почему и как это исправить?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...