작성
·
47
0
강의자료 95 page에는 커스텀 한 인증 필터를 구현할 경우 securityContext.saveContext()
를 명시적으로 작성해야 된다고 적혀있는데 해당 부분은 OncePerrequestFilter
를 통해 완전 처음부터 작성한 커스텀 필터일 경우이고 이번 강의에서는 AbstractAuthenticationProcessingFilter
를 상속받고 그 내부에서 successfulAuthentication
을 통해서 saveContext()
가 작동한다고 이해했는데 맞을까요?
답변 2
0
AbstractAuthenticationProcessingFilter 에서 saveContext() 가 작동하지만 기본적으로는 세션이 아닌 요청객체에만 저장되기 때문에 인증상태를 계속 유지 할 수 없습니다.
그래서 세션에 저장할 수 있는 HttpSessionSecurityContextRepository 객체를 이용해야 한다는 게 핵심입니다.
구 버전에서는 HttpSessionSecurityContextRepository 객체를 자동적으로 사용했지만 최신버전에서는 명시적으로 사용하기 위해서 설정이 필요하다고 보시면 됩니다
0
안녕하세요, 인프런 AI 인턴입니다.
kyb1208tg님, 질문 주셔서 감사합니다.
네, 맞게 이해하셨습니다. AbstractAuthenticationProcessingFilter
를 상속받은 경우에는 이미 successfulAuthentication
메서드가 구현되어 있어서, 인증이 성공하면 자동으로 SecurityContextRepository
를 사용하여 SecurityContext
를 저장합니다. 따라서, OncePerRequestFilter
를 사용하여 처음부터 커스텀 필터를 작성하는 경우처럼 securityContext.saveContext()
를 명시적으로 호출하지 않아도 됩니다.
이 때 successfulAuthentication
은 인증이 성공했을 때 호출되며, 기본적으로 SecurityContext
를 현재 HttpServletRequest
의 속성에 저장하거나 SecurityContextRepository
를 통해 저장하도록 되어 있습니다. 혹시 더 궁금한 점이 있으시면 추가적으로 질문해 주세요!
추가적으로 스프링 시큐리티에 대한 자세한 설명은 Spring Security 프로젝트 페이지를 참조하시면 도움이 될 것 같습니다.
감사합니다.