클라이언트에서 요청이 들어오면,
여러 표준 서블릿 필터가 진행되는 와중
DelegatingFilterProxy로 요청이 들어온다.
DelegatingFilterProxy는 의존주입을 통해, delegate라는 필터를 받는데,
이때, 스프링 시큐리티를 사용한다면 delegate는 FilterChainProxy라는 필터가 될 수 있다.
->FilterChainProxy는 Filter를 구현하고 있기 때문...
->FilterChainProxy에는 애플리케이션 컨텍스트에 포함된 모든 필터 체인들을 등록한다.(의존주입....상당히 어렵네..)
다른 표준 서블릿 필터와 같이 doFilter 메서드를 실행한다.
request, response, filterChain(이 filterChain은 표준 서블릿 필터 체인이다 착각하지 말자.)
어지저찌해 invoke
FilterChainProxy(여러 필터체인을 모아둔)을 doFilter
filterChainProxy==============================================================================
doFilter이다. 다시 한 번 말하지만 FilterChain는 표준 서블릿 필터체인이다. 계속 인자로 받는 이유는 언제든지 표준 서블릿 필터체인으로 돌아가기 위함이라고...한다...
boolean clearContext = request.getAttribute(FILTER_APPLIED) == null;
요청에 FILTER_APPLIED라는 어트리뷰트가 없다면 true (아직 실행되기 전인 필터)
if (!clearContext) {
this.doFilterInternal(request, response, chain);
FILTER_APPLIED라는 어트리뷰트가 있다면 doFilterInternal
FILTER_APPLIED라는 어트리뷰트가 없다면
request.setAttribute(FILTER_APPLIED, Boolean.TRUE);
this.doFilterInternal(request, response, chain);
실행됨을 추가 후 doFilterInternal
어쩌구 저쩌구뭐라뭐라해서
필터들을 받아 모든 필터 리스트를 생성
여기서 사진 상 마지막 줄
this.filterChainDecorator.decorate(reset, filters).doFilter(firewallRequest, firewallResponse);
을 사용해 필터들을 사용해준다 한다...
자세한 거는 후에 더 디버깅 후 고치겠음..
'스프링 시큐리티' 카테고리의 다른 글
시큐리티 필터 체인 (0) | 2025.04.28 |
---|---|
SpringApplication.run 이후 초기화 (0) | 2025.04.26 |
Authentication 흐름 2(AnonymousAuthenticationFilter) (1) | 2024.08.06 |
FilterChain과 책임 연쇄 패턴 (1) | 2024.08.05 |
Authentication 흐름 1(SecurityContextHolderFilter) (0) | 2024.08.03 |