카테고리 없음

스프링 시큐리티 dofilter (필터체인)

jw-backend 2024. 7. 25. 01:38
반응형

filterChain.doFilter(request, response) 호출은 필터 체인에서 다음 필터 또는 최종 리소스(예: 컨트롤러)로 요청을 전달하는 중요한 작업입니다. 이 호출의 필요성과 이유를 설명하겠습니다.

doFilter의 필요성

  1. 필터 체인의 연속성:
    • Spring Security는 여러 개의 필터로 구성된 체인을 사용합니다. 각 필터는 특정 작업을 수행한 후, 다음 필터로 요청을 전달해야 합니다. doFilter를 호출하지 않으면 다음 필터가 실행되지 않으며, 최종 리소스에 도달하지 못합니다.
  2. OncePerRequestFilter의 동작:
    • OncePerRequestFilter를 상속받은 필터는 기본적으로 요청당 한 번만 실행되도록 설계되었습니다. 이 경우에도 doFilter가 호출되어야 필터 체인이 정상적으로 작동합니다. 만약 doFilter를 호출하지 않으면, 후속 필터가 실행되지 않아 전체 요청 처리 과정이 중단됩니다.

호출이 없는 경우

  • 만약 doFilter를 호출하지 않으면:
    • 요청은 다음 필터로 전달되지 않으며, 결국 요청이 최종 리소스(컨트롤러)에 도달하지 않습니다.
    • 이로 인해 응답이 생성되지 않거나, 서버가 요청을 처리하지 않고 오류를 반환할 수 있습니다.

결론

filterChain.doFilter(request, response) 호출은 필터 체인이 정상적으로 작동하도록 보장하는 필수적인 작업입니다. 이를 통해 각 필터가 요청을 처리한 후 다음 필터 또는 최종 리소스로 요청을 전달할 수 있습니다. 따라서, 필터가 OncePerRequestFilter를 상속받았더라도 doFilter 호출은 반드시 필요합니다.