
익명 사용자, 인증 시, 인증 후 가 나뉜다.
SecurityContextPersistenceFilter 는 익명사용자나 인증 사용자나 객체를 생성해서 저장하고 조회하는 역할을 담당한다.
최종 응답 시 공통
-- SecurityContextHolder.clearContext()
SecurityContextPersistenceFilter 작동 흐름

사용자가 요청
SecurityContextPersistenceFilter는 사용자 관계없이 요청마다 요청을 받는다
SecurityContextPersistenceFilter필터는 HttpSecurityContextRepository 클래스를 가지고 있다 -- SecurityContext를 만들고 저장하는 클래스
인증전
4-1 새로운 컨텍스트를 생성(세션에 인증정보 있는지 확인하지)
[SecurityContextHolder.SecurityContext 정보는 null이지]
4-2 인증필터 AuthFilter가 인증처리한다.
4-3 인증이 완료되었다 SecurityContextHolder.SecurityContext.Authentication을 저장한다.(인증 객체를 저장한다)
-- 인증시점에는 새로운 컨텍스트만 생성하고 다음 필터에 넘긴다.
-- AuthFilter가 인증 후 인증 객체를 저장하는것이다.
4-4 다음 필터로 이동하다가 Session에 SecurityContext를 저장한다.
4-5 SecurityContext를 SecurityContextHolder에서 제거
4-6 클라이언트에 응답
인증 후
5-1 세션에서 SecurityContext가 있는지 확인한다. 있겠지.
5-2 session에서 SecurityContext를 불러와서 SecurityContextHolder 안에 Securitycontext에 인증객체를 넣고 다음 필터로 넘어간다.
요약
SecurityContextPersistenceFilter
1.인증을 받기 전
1-1 새로운 SecurityContext를 생성
1-2 SecurityContextHolder 안에 ThreadLocal이 있어.
1-3 SecurityContext가 있는데 인증 받기 전이니까 null이겠지.
인증을 받은 후
2-1 SecurityContextHolder 안에 ThreadLocal SecurityContext에 인증객체 저장
2-2 인증 받은 후에는 session을부터 가져와서 인증객체를 SecurityContext에 저장한다.
