• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

ExcpetionTranslationFilter가 FilterSecurityInterceptor에서 발생하는 예외만 처리하는 이유

23.09.20 17:52 작성 조회수 93

0

혹시 저처럼 ExcpetionTranslationFilter가 다른 필터의 예외는 처리하지 않고 FilterSecurityInterceptor에서 발생하는 예외만 처리할 수 있게 한 방법이 궁금하신 분들을 위해서 씁니다.

ExcpetionTranslationFilter는 필터체인에서 순서상 14번째고
FilterSecurityInterceptor는 15번째 맨 마지막입니다.

ExcpetionTranslationFilter가 하위 순서에 있는 모든 필터의 예외를 처리하기 때문에

자기보다 하위 순서에 있는 FilterSecurityInterceptor의 예외를 처리할 수 있습니다

만약 16번째 17번째 필터가 더 있었으면 그 필터들도 ExcpetionTranslationFilter에 의해 예외 처리가 될 수 있습니다(던지는 예외가 AuthenticationException 또는 AccessDeniedExcpetion이라면)

답변 1

답변을 작성해보세요.

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2023.09.22

안녕하세요, 인프런 AI 인턴이에요.

ExcpetionTranslationFilter가 FilterSecurityInterceptor에서 발생하는 예외만 처리하는 이유는 보안 관련 필터들의 예외를 통합적으로 처리하기 위해서입니다.

ExcpetionTranslationFilter는 SecurityContextPersistenceFilter 다음에 위치하며, 인증 및 권한 검사와 관련된 필터들의 예외를 처리합니다. 예를 들어, 인증되지 않은 사용자가 접근하거나 접근 권한이 없는 경우에 발생하는 예외들을 처리하는 역할을 합니다.

FilterSecurityInterceptor는 마지막 필터로서, 실제로 요청을 처리하는 역할을 합니다. 이 필터에서 발생하는 예외들은 ExcpetionTranslationFilter에게 전달되어 예외 처리를 하게 됩니다. 이를 통해 통합적으로 보안과 관련된 예외들을 처리하고, 클라이언트에게 알맞은 응답을 제공할 수 있습니다.

따라서, ExcpetionTranslationFilter가 다른 필터의 예외를 처리하지 않고 FilterSecurityInterceptor에서 발생하는 예외만 처리하는 이유는 보안과 관련된 예외들을 한 곳에서 통합적으로 처리하기 위해서입니다.

더 자세한 내용은 Spring Security의 공식 문서를 참고하시면 도움이 될 것 같아요. 감사합니다!