mjeongriver
Published 2024. 1. 23. 10:36
Principal 객체 TIL/Spring

* Principal 객체란?

- 스프링 시큐리티에서 사용자의 인증 정보를 담고있는 객체로 스프링 시큐리티는 사용자가 인증되면 Principal 객체를 생성하고 이를 컨트롤러 메서드에 주입합니다. 주로 사용자의 식별 정보를 담고 있으며, 주로 사용자의 식별자 (예: 사용자 아이디)를 얻을 때 사용됩니다.

principal.getName()을 호출하면 현재 로그인한 사용자의 사용자명(ID)를 알 수 있습니다.

 

JWT (JSON Web Token)을 사용하는 경우, JWT 토큰에는 사용자의 정보가 포함되어 있고, 스프링 시큐리티는 이 정보를 이용하여 Principal 객체를 생성합니다. 주로 JWT 토큰의 클레임(claims)에서 사용자 아이디를 추출하여 Principal 객체에 담습니다. 이렇게 생성된 Principal 객체는 컨트롤러 메서드에서 주입되어 사용자를 식별하고 사용자에 대한 작업을 수행할 수 있게 해줍니다.

 

즉, JWT를 사용하면 사용자가 로그인하고 JWT 토큰을 발급받으면, 해당 토큰을 이용하여 스프링 시큐리티는 Principal 객체를 자동으로 생성하고 컨트롤러에서 사용할 수 있도록 해줍니다. 이렇게 생성된 Principal 객체를 통해 사용자를 식별하고 사용자와 관련된 작업을 수행할 수 있습니다.

@RequestMapping(value = "/user", method = RequestMethod.PUT)
public ResponseEntity<?> updateUserDetails(@RequestBody UserDTO userDTO, Principal principal) {
    String userId = principal.getName();
    return ResponseEntity.ok(userService.updateUserDetails(userId, userDTO));
}

 

'TIL > Spring' 카테고리의 다른 글

@SpringBootApplication(exclude = { SecurityAutoConfiguration.class })  (0) 2024.01.23
consumes와 produces의 차이  (0) 2024.01.22
빌드 관리 도구(maven, gradle의 차이)  (0) 2023.08.18
day81-spring  (0) 2023.02.09
day80-spring  (0) 2023.02.08
profile

mjeongriver

@mjeongriver

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

검색 태그