Spring Security 는 Servlet Filter를 기반으로 서블릿을 지원하므로, Filter의 역할을 이해하면 이해해 도움이 될 것이다.
이름 의미 그대로 여러개의 Filter들이 사슬처럼 연결되어 있고 서로 연결되어 동작한다
public void int(FilterConfig filterConfig) throws ServletException
// 필터를 웹 콘테이너 내에 생성한 후 초기화 할때 호출한다
'
public void doFilter(ServletReqeust request, ServletResponse response, FilterChain chain) throws java.io.IOException, ServletException
// 체인을 따라 다음에 존재하는 필터로 이동한다, 체인의 가장 마지막에는 클라이언트가 요청한 최종 자원이 위치한다
public void destroy()
//필터가 웹 콘테이너에서 삭제될 때 호출한다
위 코드에서 필터의 역할을 하는 메서드는 바로 doFilter() 이다.
서블릿 컨테이너는 사용자가 특정한 자원을 요청했을 때, 그 자원 사이에 필터가 존재할 경우 그 필터 객체의 doFilter() 메서드를 호출하여 바로 이 시점부터 필터가 작용하기 시작한다
public class FirstFilter implements Filter {
public void init(FilterConfig filterConfig) throws ServletException {
// 필터 초기화 작업
}
public void doFilter(ServletRequest request,
ServletResponse response,
FilterChain chain)
throws IOException, ServletException {
// 1. request 파리미터를 이용하여 요청의 필터 작업 수행
// 2. 체인의 다음 필터 처리
chain.doFilter(request, response); // 3. response를 이용하여 응답의 필터링 작업 수행
}
public void destroy() {
// 주로 필터가 사용한 자원을 반납
}
}