[Spring Security] 0. Servlet Filter
들어가기 전 Servlet Filter 에 대해서...
- 필터는 서블릿 컨테이너의 필터 체인에서 순차적으로 실행된다.
- 각 필터는 클라이언트 요청이 서블릿으로 전달되기 전의 선처리(pre-processing) 작업과
서블릿의 응답이 클라이언트로 전달되기 전의 후처리(post-processing) 에 작업을 수행할 수 있다.
→ chain.doFilter()
메서드 호출 이전에 수행되는 작업은 전처리, 호출 이후에 수행되는 작업은 후처리로 간주된다.
- 사용자 정의 필터를 위해
FilterConfig
, FilterChain
, Filter
가 필요하다.
- 사용자 정의 필터 클래스는
javax.servlet.Filter
인터페이스를 구현하여 만들어진다.
→ 해당 인터페이스를 구현하는 클래스는 init()
, doFilter()
, destroy()
메서드를 재정의하여 필터의 초기화, 실제 필터링 작업, 필터의 소멸을 처리할 수 있다.
FilterConfig
인터페이스와 FilterChain
인터페이스를 구현한 클래스는 웹 컨테이너에 의해 제공된다.
→ 두 개의 인터페이스는 서블릿 필터를 설정하고 관리하기 위한 역할을 담당한다.
FilterConfig
FilterConfig
객체는 각 필터의 init()
메서드의 인자로 전달되며, 이를 통해 초기화 과정에서 필요한 설정 정보를 가져올 수 있다.
- 해당 필터는 필터링 작업을 수행할 준비가 되며, 이후 클라이언트의 요청을 처리할 수 있는 상태가 된다.
FilterChain
FilterChain
객체는 각 필터의 doFilter()
메서드에서 세 번째 인자로 전달된다.
- 해당 필터는 필요한 작업을 수행한 후에
FilterChain
객체의 doFilter()
메서드를 호출하여 요청을 다음 필터로 전달하거나, 필터 체인의 끝에 도달할 경우 서블릿으로 요청을 전달할 수 있다.