Principal

dia·2025년 2월 3일

현재 로그인한 사용자의 정보를 담고 있는 객체
Spring Security에서 로그인 인증 성공 후 PrincipalSecurityContextHolder에 저장
필요 시 @AuthenticationPrincipal을 통해 사용 가능
Spring Security에서 인증 처리 시 내부적으로 사용

로그인한 사용자 정보 가져오기

SecurityContextHolder.getContext().getAuthentication().getPrincipal();


Principal 객체

UserDetails 구현체

UserDetails를 구현한 클래스

Spring Security에서 기본적으로 제공하는 인증 방식
인증 정보만 포함되어 있음 (비밀번호, 권한 등)
유저 정보를 별도로 다시 조회해야 함

장점

보안 관련 제공 기능 사용 가능

  • 계정 활성화 여부 (isEnabled())
  • 계정 만료 여부 (isAccountNonExpired())
  • 계정 잠김 여부 (isAccountNonLocked())
  • 비밀번호 만료 여부 (isCredentialsNonExpired())

보안과 비즈니스 로직 분리

  • UserDetails: 인증 관련 정보(아이디, 비밀번호, 권한 등)만 저장
  • 도메인 객체: 비즈니스 로직(이름, 이메일, 주문 정보 등) 담당

높은 확장성과 재사용성: Spring Security 기능 연동


도메인 구현체

직접 만든 구현체
ex)WebtyUser

도메인에서 사용하는 유저 정보가 모두 담겨있음
추가적인 DB 조회 불필요

장점

인증 후 매번 추가적인 DB 조회 방지 가능


profile
CS 메모장

0개의 댓글