• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    해결됨

예외처리에 관해 이해가 어려운 부분이 있습니다.

24.05.05 18:21 작성 조회수 87

0

안녕하세요 강의 잘 보고 있습니다. 다름이 아니라 예외를 처리하는 부분에서 이해가 잘 가지 않는 부분이 이렇게 질문을 드립니다.

스프링 시큐리티의 FilterChainProxy의 끝단에 예외를 처리하는 ExceptionTranslationFilter가 존재합니다. 해당 필터가 인가 예외를 처리하는 것까지는 이해하였습니다.

 

그러나 인증예외를 다루는 것이 조금 이해가 가지 않습니다.

스프링 시큐리티에서 제공하는 formLogin 인증을 포함한 모든 인증 방식은 ExceptionTranslationFilter앞에 존재합니다.

그럼에도 불구하고 인증 필터들에서 발생하는 예외들을 ExceptionTranslationFilter에서 처리를 합니다. 기존의 저는 예외가 발생할 즉시 바로 자신을 호출한 객체에게 예외를 반환하며 프로세스가 진행한다 알고 있는데 이는 스프링 시큐리티에서 인증예외를 처리하는 흐름과는 정 반대의 흐름입니다.

 

혹시 인증 필터에서 해당 예외가 발생할시 예외를 Throw하는 것이 아닌 다른방식으로 예외를 감싸서 ExceptionTranslationFilter까지 흘러가는 건가요? 아니면 제가 놓치는 부분이 있는걸까요?

답변 1

답변을 작성해보세요.

1

네 이부분은 ExceptionTranslationFilter 챕터에서 설명하고 있습니다.

ExceptionTranslationFilter 는 AuthorizationFilter 에서 발생한 예외를 처리하고 있습니다.

즉 ExceptionTranslationFilter 이전 필터들에서 발생하는 예외를 처리하지 않습니다.

ExceptionTranslationFilter 이전 필터들에서 발생하는 예외는 해당 필터에서 예외를 처리하거나 그 이전필터에게 예외를 전가하는 식으로 이루어집니다

그래서 formLogin 에서 발생하는 예외는 UsernamePasswordAuthenticationFilter 에서 처리합니다.

강의에서도 설명하고 있으니 참고 해 주시기 바랍니다.

이상민님의 프로필

이상민

질문자

2024.05.07

감사합니다 :)