인프런 커뮤니티 질문&답변

cykkkk님의 프로필 이미지
cykkkk

작성한 질문수

스프링 시큐리티

5) Logout 처리, LogoutFilter

SecurityContextHolder에 대해서 궁금합니다.

작성

·

544

0

안녕하세요. 강의 잘 듣고 있습니다.

SecurityContextHolder.clearContext()를 해주는데 SecurityContextHolder는 SecurityContext를 담는 객체인가요?

그러면 SecurityContextHolder에 여러 SecurityContext가 들어갈수도 있는건가요?

그럼 한 사용자의 여러 인증객체를 가지고 있는건가요?? 아니면 서버에 인증한 여러 사용자들의 인증객체를 SecurityContextHolder에 담고 있는건가요?? 

만약 여러 사용자의 인증 객체들 SecurityContextHolder에서 가지고 있는데 SecurityContextHolder.clearContext()를 한다면 로그아웃 한 사용자 뿐만 아니라 다른사용자도 로그아웃 될것 같은 느낌의 메서드 이름인데.... 

어떤 기준으로 SecurityContextHolder안에 SecurityContext를 가지고 있는지 궁금합니다!

답변 1

1

정수원님의 프로필 이미지
정수원
지식공유자

SecurityContextHolder 는 SecurityContext 를 담는 클래스는 맞지만 여러개를 중복해서 담지는 않습니다.

SecurityContextHolder 는 ThreadLocal 이라는 요청 스레드마다 주어지는 개별 저장소를 속성으로 가지고 있고 이 ThreadLocal 에 SecurityContext  를 저장하기 때문에 여러 사용자가 서버에 접속하더라도 각 사용자 스레다마다 가지고 있는  ThreadLocal 은 유일하기 때문에 결론적으로 SecurityContextHolder 은 사용자별로 오직 하나의 SecurityContext 만 참조하고 있습니다.

SecurityContextHolder / SecurityContext 챕터 강의를 참고해 주시기 바랍니다.

감사합니다

cykkkk님의 프로필 이미지
cykkkk
질문자

친절한 답변 감사합니다~ 뒤에 해당하는 내용이 나오는군요! 빨리 봐야겠네요

cykkkk님의 프로필 이미지
cykkkk

작성한 질문수

질문하기