참조
OncePerRequestFilter vs GenericFilterBean
- 대체로 인증 커스텀 필터를 구성할 떄
GenericFilterBean, OncePerRequestFilter
구현해서 적용
- 스프링에서
DispatcherServlet
이 서블릿 컨테이너 앞에서 모든 요청을 컨트롤러에 전달
- 서블릿은 요청마다 서블릿을 생성하여 메모리에 저장한 뒤 같은 클라이언트의 요청이 들어올 경우 생성해둔 서블릿 객체를 활용
- 만약 서블릿이 다른 서블릿으로 dispatch하게 되면, dispatch된 서블릿 앞단에서 filterChain을 한번 더 거치게 됨
- 이 차이 때문에
OncePerRequestFilter
사용
- 즉, 내부적으로 프로젝트의 다른 API 요청할 떄마다 모든 API가 동일한 보안 필터를 갖기 때문에 동일한 인증이 다시 발생하게 됨
- 이를 막기 위해 사용되는 것이
OncePerRequestFilter
- 내부적으로는 요청이 이미 필터링 되었는지 확인 후 필터링 되었다면 필터링을 진행하지 않음