inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

스프링 기반 REST API 개발

현재 사용자 조회

핸들러 파라미터로 @AuthenticationPrincipal 어노테이션을 설정 했을때 동작 원리에 대한 질문입니다.

해결된 질문

381

Henu

작성한 질문수 66

1

안녕하세요. "현재 사용자 조회" 강의 내용 중

핸들러 메소드의 파라미터로 Spring Security가 제공하는 @AuthenticationPrincipal 어노테이션을 사용하여 Principal 객체를 주입받아서 사용하는 부분이 있었습니다.(EventController.class의 핸들러 메소드 파라미터 부분)

Principal 객체란 SecurityContextHolder 안에 담겨 있는 인증된 사용자의 정보이고 기본적으로 username, password, grantType을 가지고 있지만, 

이를  Security 설정 파일에서 설정한 UserDetailsService 구현체의 loadUserByUsername() 메소드를 통해 얻어지는 커스텀한 Principal 객체로써도 사용이 가능하다는 것을 알게되었습니다.

(추가적인 사용자의 정보를 참조할 수 있다는 점에서 User 타입의 단점(?)을 보완할 수 있다고 생각이 듭니다.)

서론이 길었네요.

궁금한 것은 @AuthenticationPrincipal 어노테이션을 사용했을 때...

그리고 SpEL을 사용하여 "anonymousUser"가 아니라면  메소드 파라미터로 Account 타입의 객체를 주입할 수 있었던 이유는

해당 어노테이션이 인증된 사용자 정보가 SecurityContextHolder안에 담겨져 있으면 자동으로 주입해주는 역할을 하며,

현재 애플리케이션에서는 인증 과정과 어댑터 패턴을 통해 AccountAdapter 객체가 Principal로 SecurityContextHolder 안에 담겨져 있을 테고, SpEL을 통해 AccountAdapter의 getAccount() 메소드를 호출 함으로써 주입한다라고 생각하면 될까요?

긴 글 읽어주셔서 감사합니다.

spring rest-api java

답변 1

1

백기선

네 맞습니다.

Spring 시큐리티 관련해서 WebSecurityConfigurationAdapter

0

73

1

junit5 사용하시는 분들

0

88

1

자바 빈 스펙을 준수하는지 체크하는 테스트

0

236

2

REST API 개발 중 비즈니스 로직 적용 부분의 JSON 에러

0

243

1

스프링 부트 3버전에서의 실습

0

190

1

java.lang.AssertionError: Status

0

532

2

spring doc 관련 파일 생성 관련 배포 관련 질문 드립니다.

0

287

1

섹션2 201응답받기 부분 테스트 404에러 질문입니다

0

741

1

강의 자료가 404입니다 확인 부탁 드려요!

0

477

1

연동 DB문의

0

358

1

이벤트 Repository강의 중 Event 클래스에 private Integer Id; 위치 질문

0

505

1

(Mac) postgressql 관련하여 port kill 해도 다시 살아나는 경우

0

380

0

maven으로 생성한 docs파일(index.html)에서의 not found 오류 질문

0

621

1

테스트 오류 질문드립니다.

0

512

1

docs 요청값이 반영이 안되네요... (해결)

-1

394

1

psql 적용 후 에러

0

818

2

mvn package 시 다음과 같은 에러가 나시면

0

765

2

Event에 Account manager를 추가했으면 문서화 필요

0

274

1

2년 훨씬 전 부터 Restlet-> Talend API 로 바뀌었습니다~

1

473

1

asciidoc 추가 스니펫 에러 해결법

0

400

1

_links 는 현재 fieldWithPath 를 해주지 않아도 됩니다.

0

424

3

깃랩 처음 사용자를 위한 index.adoc raw 보는 법

0

332

1

eclipse 쓰시는 분을 위한 maven-resources-plugin 팁

0

333

1

부트 + jupiter 인 경우 설정법

0

342

1