как игнорировать параметры запроса в весенней безопасности - PullRequest
0 голосов
/ 16 марта 2020

Я хочу реализовать AuthenticationFailureHandler со следующей конфигурацией:

// Auth failure handler
@Bean
public AuthenticationFailureHandler appAuthenticationFailureHandler() {

    ExceptionMappingAuthenticationFailureHandler failureHandler = new ExceptionMappingAuthenticationFailureHandler();
    Map<String, String> failureUrlMap = new HashMap<>();
    failureUrlMap.put(BadCredentialsException.class.getName(), "/login?error");
    failureUrlMap.put(AccountExpiredException.class.getName(), "/login?expired");
    failureUrlMap.put(LockedException.class.getName(), "/login?locked");
    failureUrlMap.put(DisabledException.class.getName(), "/login?disabled");
    failureHandler.setExceptionMappings(failureUrlMap);

    return failureHandler;

}

и в class SecurityConfiguration extends WebSecurityConfigurerAdapter У меня есть:

@Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests()
            .antMatchers("/register", "/confirm").permitAll()
                .anyRequest()
                .authenticated()
                .and()
                .formLogin()
                .loginPage("/login")
                // username password
                .usernameParameter("username")
                .passwordParameter("password")
                // success and failure handlers
                .successHandler(appAuthenticationSuccessHandler())
                .failureHandler(appAuthenticationFailureHandler())
                .permitAll()
                .and()
                .logout()
                .logoutRequestMatcher(new AntPathRequestMatcher("/logout"))
                .logoutSuccessUrl("/login?logout")
                .invalidateHttpSession(true)
                .clearAuthentication(true)
                .permitAll()
                .and()
                .exceptionHandling().accessDeniedHandler(accessDeniedHandler())
        ;
    }

с этим, все упомянутое выше не перенаправляет на соответствующий URL-адрес ошибки, но если я удаляю

.anyRequest()
.authenticated()

, то он перенаправляется на соответствующий URL-адрес ошибки, но сейчас это не очень хорошая практика, поэтому вопрос заключается в том, как настроить configure() на игнорирование / вход в систему ? запросить параметр и реализовать дальнейшие логи c соответственно?

1 Ответ

0 голосов
/ 16 марта 2020

Как я понимаю, проблема в том, что ссылки типа "/login?.*" доступны только после авторизации. Согласно весенним примерам , вы можете исключить пути из авторизованного доступа с помощью следующего кода в файле конфигурации:

@Override
public void configure(WebSecurity web) throws Exception {
    web
        .ignoring()
            .antMatchers("/resources/**");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...