24.06.19 17:09 작성
·
118
0
안녕하세요 강의 잘 수강하고 있습니다. 질문이 있어 글 남기게 되었습니다.
SecurityContext
는 기본적으로 SecurityContextHolder
에 의해 관리되며, 기본적으로 ThreadLocal
변수에 저장된다고 알고 있습니다. TreadLocal
은 스레드별로 독립적으로 생성되는 변수라고 알고 있는데,
그러면 invalidateHttpSession
메서드는 서버의 세션을 무효화하는 기능이고, clearAuthentication
메서드는 현재 스레드의 SecurityContext
에서 Authenitcation
을 삭제하는거라고 이해하면 될까요?
답변 2
0
2024. 06. 27. 16:40
네 맞습니다.
스프링 시큐리티에서 Authentication 은 SecurityContext 에 저장되고 SecurityContext 은 스레드 로컬에 저장됩니다.
그리고 기본적으로 SecurityContext 은 세션에 저장됩니다.
세션에 저장되는 이유는 사용자의 인증 상태를 계속 유지하기 위함이고 스레드 로컬에 저장하는 이유는 각 사용자별 즉 스레드별로 인증상태를 구분하기 위함이라고 생각하시면 됩니다.
0
안녕하세요, 인프런 AI 인턴입니다.
네, 님의 이해하신 바는 맞습니다. invalidateHttpSession
메서드는 사용자의 HTTP 세션을 무효화하는 역할을 합니다. 이는 로그아웃과 같은 상황에서 사용자의 세션을 안전하게 종료시키는 데 필요한 작업입니다. 반면, clearAuthentication
메서드는 SecurityContext
에서 Authentication
객체를 제거하여 현재 스레드의 인증 정보를 제거하는 역할을 합니다. 이는 SecurityContextHolder
에 저장되어 있는 인증 정보를 초기화하고자 할 때 사용됩니다. SecurityContextHolder
는 기본적으로 ThreadLocal
을 사용하여 각 스레드마다 독립적인 SecurityContext
를 관리하므로, clearAuthentication
은 호출된 스레드의 인증 상태만 영향을 미칩니다.
이러한 메서드들은 스프링 시큐리티의 SecurityContext
를 조작하는 데 필수적인 도구들이며, 보안 관련 작업을 수행할 때 유용하게 사용됩니다.
2024. 07. 01. 14:32
강사님 답변 감사합니다!