1️⃣Login 방법에 따른 다른 return 값을 하나로

1. 사이트 회원가입 사용자 로그인 시 세션에 저장되는 객체는 UserDetails , return type ⇒ UserDetails

Untitled

2. 페이스북 로그인 시 세션에 저장되는 객체는 OAuth2User , return type ⇒ OAuth2User

Untitled

1번 2번 모두 같은 객체로 세션에 저장되어 접근 할 수 있도록 PrincipalDetails 클래스 생성)

UserDetails OAuth2User를 상속받은 받아 직접 구현한 구현체가 바로 PrincipalDetails

public class PrincipalDetails implements UserDetails, OAuth2User {

    private static final long serialVersionUID = 1L;

    private User user;

    public PrincipalDetails(User user) {
        this.user = user;
    }

		/* Override Method... */

}


2️⃣OAuth2 Login 과정

( Facebook 에 인증 코드 받음 ➡ 정보에 접근할 수 있는 Access Token 발급 ➡ Access Token으로 정보 요청 )➡ 응답된 정보로 회원가입 ➡ 로그인 성공

⇒ 밑줄 친 부분은 OAuth2 라이브러리가 자동으로 처리

🔹 OAuth2DetailsService

Untitled

37 : 사용자의 정보 받기