현재 상황
- 모든 API에 대해 로그인여부 상관없이 접근 권한을 열어주고 테스트를 했습니다.
- 이러한 상황에서 로그인 관련 모든기능이 구현 완료되었습니다.
제시하는 방법
- 이제 로그인정보가 사용가능하기 때문에 API 호출시 로그인한 유저 정보가 필요한 경우 query로 가져오는 방식이 아닌
- @AuthenticationPrincipal 을 이용해 controller 단에서 받아옵니다.
@AuthenticationPrincipal
- 로그인 성공(인증 성공)한 멤버 정보(UserDetails)를 받기 위한 어노테이션 입니다.
- 로그인한 유저정보가 필요한 경우 사용합니다
구현 예시
- 예를 들어 제가 구현한 마이페이지입니다.
- MemberController의 일부 코드입니다.
@GetMapping("")
fun getMyPageInfo(@AuthenticationPrincipal authMemberDTO: AuthMemberDTO?): ResponseMyPageDTO {
return memberService.getMyPageInfo(authMemberDTO?.memberId)
}
- 이런식으로 로그인한 멤버면 매 요청마다 AuthMemberDTO 형태로 현재 로그인한 멤버 정보를 받아올 수 있습니다.
- 로그인한 유저의 memberId가 필요했기 때문에 authMemberDTO에서 가져와서 사용합니다.
참고사항 - postman 테스트 시
-
postman에서 로그인 사용자로 API를 호출하는 방법을 제시합니다.
-
먼저 인증할 회원을 회원가입 API로 생성합니다.

-
이후 호출하고 싶은 API의 Authorizattion 탭에 들어갑니다.

-
type을 Basic Auth로 설정하고 아까 회원가입 API로 생성한 id, 비밀번호를 입력합니다.

-
이후에 API를 호출하면 정상적으로 로그인한 상태로 API를 호출할 수 있습니다.
참고사항 - 테스트 코드 작성시
- 로그인이 필요한 API의 테스트코드를 작성할때는 MockUser를 생성해야합니다.
- 현재는 제가 Factory 클래스로 MockCustomUser를 생성해놓았습니다.
- 따라서, 로그인 정보가 필요한 테스트코드 메서드에 @WithMockCustomUser 어노테이션만 추가하시면 테스트가 가능합니다.
- Mockuser의 관련된 정보는 WithMockCustomUserSecurityContextFactory 클래스에서 확인하실 수 있습니다.
구현 예시
참고자료
현재 상황
제시하는 방법
@AuthenticationPrincipal
구현 예시
참고사항 - postman 테스트 시
postman에서 로그인 사용자로 API를 호출하는 방법을 제시합니다.
먼저 인증할 회원을 회원가입 API로 생성합니다.
이후 호출하고 싶은 API의 Authorizattion 탭에 들어갑니다.
type을 Basic Auth로 설정하고 아까 회원가입 API로 생성한 id, 비밀번호를 입력합니다.
이후에 API를 호출하면 정상적으로 로그인한 상태로 API를 호출할 수 있습니다.
참고사항 - 테스트 코드 작성시
구현 예시
제가 구현한 password 변경 테스트 코드입니다.
참고자료