🚩 DefaultAuthenticationEventPublisher는 예외(실패)와 이벤트를 매핑하고 있다
예를 들어 A예외가 발생하면 a이벤트 발행
따라서 예외만 전달하더라도 해당 이벤트를 발행하도록 되어있다
발행된 이벤트 타입을 수신에 넣어야 수신할 수 있다
@Component
public class AuthenticationEvents {
@EventListener
public void onSuccess(AuthenticationSuccessEvent success) {...}
@EventListener
public void onFailure(AbstractAuthenticationFailureEvent failures) {...}
}
상위 이벤트는 각각의 이벤트가 수신될 때 마다 수신된다
🚩 DefaultAuthenticationEventPublisher는 예외(실패)와 이벤트를 매핑하고 있다
예를 들어 A예외가 발생하면 a이벤트 발행
따라서 예외만 전달하더라도 해당 이벤트를 발행하도록 되어있다
이를 커스텀하게 만들어서 원하는 이벤트를 발행하도록 할 수 있다
//매핑
Collections.singletonMap(CustomException.class, CustomAuthenticationFailureEvent.class);
authenticationEventPublisher.setAdditionalExceptionMappings(mapping); // CustomException 을 던지면 CustomAuthenticationFailureEvent 를 발행하도록 추가 함
authenticationEventPublisher.setDefaultAuthenticationFailureEvent(CustomDefaultAuthenticationFailureEvent.class); // 기본 이벤트 설정
//발행
authenticationEventPublisher.publishAuthenticationFailure(new CustomException("CustomException "), authentication);
//수신
@EventListener
public void onFailure(CustomAuthenticationFailureEvent failures) {
// 커스텀 예외에 대해 이벤트를 수신할 수 있다 System.out.println(" failures = " + failures.getException().getMessage());
}