* 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 |