- HttpServletRequest.getUserPrincipal() 으로 현재 사용자 정보를 가져올 수 있다.
- SecurityContextHolder로 SecurityContextHolder.getContext().getAuthentication()
- 스프링 시큐리트의 @AuthenticationPrincipal이 적용된 어노테이션을 생성할 있다. 그리고 스프링에 UserDetails 구현체를 API 핸들러 메소드에 주입하여 요청
3번의 예제
@Target({ElementType.PARAMETER, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@AuthenticationPrincipal
public @interface CurrentUser {
}
Controller 에서 변환하여 사용
public ResponseEntity<ApiResult> createBoard(
@RequestBody CreateBoardPayload payload,
@CurrentUser SimpleUser currentUser) {
...