• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

SecurityContextHolder.getContext.setAuthentication

23.03.09 20:34 작성 조회수 682

0

 인증 필터와는 달리 SecurityContextHolder.getContext.setAuthentication, 곧 바로 세션을 만들어주셨는데요, 이게 굳이 userDetailsService의 loadByUsername을 호출할 필요가 없기 때문인가요?

답변 1

답변을 작성해보세요.

1

setAuthentication 은 loadByUsername을 호출해서,

  1. 진짜 DB에 있는지 확인하고

  2. 인증 객체인 Authentication을 스프링 시큐리티 컨텍스트 홀더에 담는 역할을 합니다.

  3. 시큐리티 컨텍스트 홀더에 인증 객체가 담기면, 시큐리티가 그걸 통해서 인증과 권한처리를 해줍니다.

우리의 인가 필터의 목적은 DB에 있는지 검증하는 것이 아닙니다.

  1. 헤더에 토큰이 있으면 검증을 하고

  2. 시큐리티 컨텍스트 홀더에 인증 객체를 강제로 담아주면, 시큐리티가 그걸 통해서 인증과 권한처리를 해줍니다.

구준형님의 프로필

구준형

질문자

2023.03.10

감사합니다 ㅎ