@AuthenticationPrincipal
Spring Security에서 사용되는 어노테이션
이 어노테이션은 주로 컨트롤러 메서드의 인자로 사용
현재 로그인한 사용자의 정보를 쉽게 접근할 수 있도록 해준다.
@AuthenticationPrincipal을 사용하면 Spring Security는 자동으로 인증된 사용자의 Principal 객체를 메서드 파라미터에 주입
이 Principal 객체는 일반적으로 사용자명이나 사용자 ID와 같은 정보가 포함된 UserDetails 객체
사용 방법
UserPrincipal(UserDetails(인터페이스) - 구현체(User) - 상속(UserPrincipal) 커스텀 클래스
public class UserPrincipal extends User {
private final Long userId;
public UserPrincipal(com.jeulog.domain.User user){
super(user.getEmail(), user.getPassword(), List.of(
new SimpleGrantedAuthority("ROLE_USER")
));
userId = user.getId();
}
public Long getUserId() {
return userId;
}
}
앞에서 설명했듯이 스프링 시큐리티는 @AuthenticationPrincipal을 사용하면 자동으로 인증된 사용자의 Principal(UserDetails)객체를 주입을 해준다.
테스트용 컨트롤러
@RestController
public class MainController {
@GetMapping("/")
public String main(){
return "메인 페이지";
}
@GetMapping("/user")
public String user(@AuthenticationPrincipal UserPrincipal userPrincipal){
return "사용자 페이지입니다.";
}
@GetMapping("/admin")
public String admin(){
return "관리자 페이지입니다.";
}
}
디버깅 모드로 테스트
'Spring > Spring Security' 카테고리의 다른 글
[Spring Security] 요청 캐시 흐름 정리 (1) | 2024.09.13 |
---|---|
[Spring Security] 핸들러(예외) 처리 (0) | 2024.09.02 |
[Spring Security] ROLE VS AUTHORITY (0) | 2024.09.02 |
[Spring Security] UserDetailsService (0) | 2024.09.02 |
[Spring Security] Remember Me (0) | 2024.09.02 |