#java #spring-boot #logging #spring-security
#java #spring-boot #ведение журнала #spring-безопасность
Вопрос:
Я пытаюсь получить журнал http-запроса / ответа в spring security. Это не проблема, если вход в систему выполнен успешно. Но при сбое входа в систему я не могу получить тело. Я использую slf4j из библиотеки журналов lombok и zalando.
Это моя конфигурация spring-security:
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.csrf().disable()
.authorizeRequests()
.antMatchers("/test/get/**").hasAnyRole("USER")
.antMatchers("/test/get-all").hasRole("ADMIN")
.antMatchers("/test/save").hasRole("ADMIN")
.and()
.formLogin()
.permitAll()
.and()
.httpBasic();
}
При успешном входе в систему я получаю такие журналы (есть тело ответа):
{"origin":"local","type":"response","body":"I am saving {"str": "Hello world"rn}"}
При сбое входа в систему я получаю ответ без тела:
{"origin":"local","type":"response", "X-XSS-Protection":["1; mode=block"]}}
Как получить тело ответа / запроса при сбое входа в систему?
Комментарии:
1. При сбое входа в систему тела нет.
2. @M.Deinum, что, если я использую security для метода POST?
3. Тела ответа нет, независимо от того, как вы отправляете материал.
Ответ №1:
Кажется, что вы используете formLogin()
, поэтому вы можете сделать это:
http
.formLogin()
.failureHandler((req, res, authentication) -> /*do whatever you want with req, res and authentication*/)
...
AuthenticationFailureHandler
Интерфейс определяет один метод, в котором вам доступны HTTP-запрос, ответ и объект аутентификации.
void onAuthenticationFailure(HttpServletRequest request, HttpServletResponse response, AuthenticationException exception)