Spring REST Controller против безопасности веб-контроллера Изолированный WebSecurityConfigurerAdapter - PullRequest
0 голосов
/ 27 сентября 2019

У меня есть весеннее веб-приложение, которому нужно использовать AJAX для перезагрузки некоторых компонентов в режиме реального времени.Хорошо работал без безопасности, и теперь мне нужно включить безопасность.Я разделил безопасность в соответствии с документацией Spring, предложенной ниже, но у меня происходит нечто странное.При неудачной аутентификации REST контроллер REST возвращает HTML-код страницы входа на стороне WebMVC.Я пытаюсь предотвратить это и отправляю только ошибку 403 в формате JSON, если это возможно.Я явно что-то здесь упускаю.

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

    protected void configure(HttpSecurity http) throws Exception {
        http
        .antMatcher("/api/**")
        .authorizeRequests()
        .antMatchers(HttpMethod.POST, "/api/**").authenticated()
        .and()
        .exceptionHandling().accessDeniedPage("/403")
        .and()
        .httpBasic()
        .and()
        .csrf().disable();
    }
}

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

    @Override
    protected void configure(HttpSecurity http) throws Exception {

        http.authorizeRequests()
        .antMatchers("/password/passwordreset", "password/passwordresetconfirmation","/password/forgotpassword","password/forgotpasswordemailsent", "/webjars/**").permitAll()
        .antMatchers("/admin","/admin/*","/actuator/**").hasAuthority("ADMIN")
        .anyRequest()
        .authenticated()
        .and()
        .formLogin()
        .loginPage("/login")
        .permitAll()
        .successForwardUrl("/index")
        .and()
        .exceptionHandling().accessDeniedPage("/403")
        .and()
        .logout()
        .permitAll()
        .logoutRequestMatcher(new AntPathRequestMatcher("/logout"))
        .logoutSuccessUrl("/login");
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...