[Spring] @AuthenticationPrincipal+SpEL 사용하기

이수민·2023년 2월 27일
0

spring

목록 보기
11/12

지난 포스팅에서 @AuthenticationPrincipal 애노테이션을 사용해 Controller 단에서 인증된 유저의 정보를 받아오는 기능을 구현했다.

이번엔 회원이 아닌 사용자의 요청도 함께 받으려 한다.


요구사항

  • 모든 사용자에게로부터 요청을 받고, 조건에 따라 로직을 분리.
    • 회원 요청인 경우 : AccessToken과 함께 요청이 왔다면 인증을 진행한 후 로직 진행
    • 비회원 요청인 경우 : AccessToken 없이 요청이 왔다면 인증을 패스하고 바로 로직 진행


SpEL

@AuthenticationPrincipalSpEL을 지원한다. (Principal의 내부 정보에 접근 가능)

이를 이용해 애노테이션이 선언되어있는 파라미터의 객체가 익명사용자 즉, “anonymousUser”인지 아닌지에 따라 다른 객체를 반환하도록 정의 할 수도 있다.

// 기존
@AuthenticationPrincipal Long userId,
// SpEL 적용
@AuthenticationPrincipal(expression = "#this == 'anonymousUser' ? null : #this") Long userId,

즉 비회원이라면 userId=null일 것이고, 회원이라면 userId=userId가 저장될 것이다.

profile
BE 개발자를 꿈꾸는 학생입니다🐣

0개의 댓글