유저별로 표시할 내용이 달라야 하는 경우, 페이지를 리턴하기 전에 먼저 로그인한 유저가 누구인지 알아야 할 필요가 있다.
스프링부트에서는 Controller단에서 로그인된 유저를 얻을 수 있도록 @AuthenticationPrincipal
아노테이션을 지원한다.
- 사용 예시
@PostMapping("/diary/write")
public String postDiaryWrite(@AuthenticationPrincipal User user, DiaryDto.CreateDiaryDto diaryDto){
diaryService.createDiaryWithUserid(diaryDto,user.getUser_id());
return "redirect:/today";
}
컨트롤러 단에서 매개변수에 @AuthenticationPrincipal
아노테이션이 적용된 인자를 통해 현재 로그인된 유저 엔티티 객체를 얻을 수 있다.
‼ 주의사항
이때 주의할 점이 있다.@AuthenticationPrincipal
이 붙은 엔티티 클래스는 아래 조건을 충족해야한다.
- 해당 엔티티 클래스는
UserDetails
를 상속받은 클래스여야 한다. - 해당 클래스는
UserDetailsService
가 구현되어 있어야 한다.
'Back End > Spring && Spring Boot' 카테고리의 다른 글
[Spring boot / JPA] 스프링 부트 데이터베이스 초기화 (0) | 2024.06.26 |
---|---|
JWT 개념과 구조, 작동 방식 (0) | 2024.06.22 |
[JPA] Entity 생성 시간 자동 기록하기 (1) | 2024.06.15 |
[Spring Boot/Jpa] DB에 반영되지 않는 Entity 필드 정의하기 (0) | 2024.06.15 |
[Spring Boot] properties 파일에 작성한 변수 Java에서 사용하기 (0) | 2024.06.14 |