• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

SecurityContextHolder에 대해서 궁금합니다.

22.07.14 23:56 작성 조회수 405

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

질문자

2022.07.22

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