@AuthenticationPrincipal 사용이 가능한 이유가
1555
작성한 질문수 8
처음에 로그인시 헤더에 jwt 토큰이 저장되고
securityContextholder, 시큐리티 세션에 저장된 loginUser가 stateless 설정에 의해 삭제 되지
계좌등록 컨트롤러에 @AuthenticationPrincipal로 세션에 저장된 loginUser를 사용이 가능한 이유가
JwtAuthrizaitionFilte에서
아래 코드로 securityContextholder에 인증이나 권한체크용으로 저장 되기 떄문에 사용이 가능한걸까요? 맞는거같은데 확실해지고자 여쭤봅니다...
Authentication authentication = new UsernamePasswordAuthenticationToken(loginUser, null, loginUser.getAuthorities());
//강제로 authentication 객체를 생성
SecurityContextHolder.getContext().setAuthentication(authentication); //강제 로그인
답변 1
0
안녕하세요, 인프런 AI 인턴이에요.
@AuthenticationPrincipal을 사용할 수 있는 이유는 JwtAuthrizaitionFilte에서 SecurityContextHolder.getContext().setAuthentication(authentication); 코드를 통해 SecurityContextHolder에 인증 객체를 저장하기 때문입니다.
JwtAuthrizaitionFilte에서는 인증에 성공한 사용자 정보를 가지고 UsernamePasswordAuthenticationToken 객체를 생성하고, SecurityContextHolder에 저장해 세션에 해당 사용자 정보를 유지시킵니다. 이렇게 저장된 사용자 정보는 @AuthenticationPrincipal을 사용하여 컨트롤러에서 쉽게 사용할 수 있습니다.
즉, @AuthenticationPrincipal은 시큐리티 컨텍스트 홀더에 저장된 인증 객체의 principal(사용자)을 가져와 사용하는 어노테이션입니다.
위의 코드를 통해 SecurityContextHolder에 Authentication 객체를 저장하면, 해당 사용자의 인증 정보를 활용할 수 있는 상태가 되고, @AuthenticationPrincipal을 통해 loginUser와 같은 정보를 접근할 수 있습니다.
이 부분이 해결되셨길 바랍니다. 추가로 궁금한 점이 있으면 답변해주세요. 감사합니다.
요청/응답 DTO 관련 문의
0
170
2
안녕하세요 인증이 필요한 url을 위하여 /s를 붙이는것에 대해 질문있습니다.
0
161
1
validation aop사용에 대해서 질문있습니다.
0
245
2
Dummy 클래스 위치에 대한 질문
0
293
2
테스트 방식에 관해서 질문이 있어요
0
292
2
스프링 버전업일 경우에는 Pointcut @PostMapping 조건이 달라질까요?
1
434
1
equals와 longValue 관련 질문드립니다
0
328
1
계좌번호를 Long 타입으로 하는 이유가 무엇일까요?!
0
499
2
[정보공유] Hibernate 로그 작동 안하시는 분들!!
3
346
0
UserControllerTest 테스트 실패 문의
0
318
1
스프링 시큐리티 6.2 버전 이후로 apply() 메서드를 이용한 JwtAuthenticationFilter 가 등록이 안됩니다.
2
1106
1
import 오류
0
426
3
spring initializer gradle 에서 3.x.x 대 밖에 없어요. 2.x.x는 보이지 않는데 어떡하져
0
438
2
안녕하세요 로그엔 성공적으로 들어온것같습니다..
0
237
1
JwtAuthorizationfilter test mvc.performget 관련 질문입니다!
0
286
1
JwtAuthorizationfilter test mvc.performget 부
0
226
1
longValue() 질문
0
228
1
jwt 인가필터 규현및 등록
0
334
1
스프링부트 3버전
1
334
1
권한처리를 위한 세션강제주입
0
418
1
JwtVO 를 인터페이스로 만든 이유
0
359
1
계좌 조회 질문드립니다
0
229
1
DummyObject 에 대하여
0
308
2
DTO를 이너클래스로 계속추가하는 이유
0
695
2





