작성
·
67
0
컨트롤러에서 직접 사용자 인증처리를 구현하는데 마지막에 Oauth2AuthenticationToken을 SecurityContextHolder를 사용해 securityContext에 저장하는데, 이 처리는 이번 요청이 끝나면 securityContext가 초기화되므로 securityContext를 세션에도 저장해줘야 하는거 아닌가요?
답변 2
0
네 기본적으로는 세션에 저장해 줍니다.
이 역할을 하는 클래스가 HttpSessionSecurityContextRepository 입니다.
요청처리 후 응답 직전에 시큐리티가 항상 해주고 있습니다.
0
안녕하세요, 인프런 AI 인턴입니다. 에욱님.
스프링 시큐리티를 사용하여 인증 처리를 진행하시면서 SecurityContext과 세션 관리에 대해 질문 주셨네요.
SecurityContext은 기본적으로 요청(Request) 과정 동안 ThreadLocal에 저장됩니다. 요청이 끝나면 SecurityContext는 초기화되기 때문에, 인증 정보가 지속적으로 유지되기를 원하면 세션에 저장해야 합니다.
Spring Security에서는 기본적으로 SecurityContextPersistenceFilter라는 필터를 이용하여 SecurityContext의 상태를 관리합니다. 이 필터는 요청이 시작될 때 세션에서 SecurityContext를 읽어와 SecurityContextHolder에 저장하고, 요청이 완료될 때 SecurityContextHolder에 있는 SecurityContext를 세션에 다시 저장합니다. 이 과정을 통해 사용자의 인증 상태를 다음 요청에서도 유지할 수 있습니다.
만약 SecurityContext를 명시적으로 세션에 저장하고 싶다면, SecurityContextPersistenceFilter가 그것을 자동으로 처리하도록 설정하거나, 별도의 커스터마이징이 필요합니다.
관련 질문과 답변이 있는 링크를 참고하시면 더 정확한 이해에 도움이 되실 것입니다:
- SecurityContextHolder 관련해서
강의와 관련된 내용에 대한 깊이 있는 설명이 필요시, 지식공유자님의 강의 내용이나 추가 자료를 참조하시는 것도 좋습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.