Spring boot kim's cafe/oauth로그인

Springboot 구글로그인!(2) with loadUser and principaldetail

디비드킴 2021. 6. 16. 14:36

자 이제 loaduser를 작성할 건데

그전에 근데 사실 지금도 로그인이 된다

다만 우리가 원하는 값없이 

id값만 딸랑 받아서 오게 될 뿐이다

이렇게

 

OAuth2UserRequest userRequest

얘가 들고 온 정보를 빼내면 된다

열어보면

그뒤로는 개인정보

막 뭐를 열심히 들고 와 줬는데

이제 우리가 필요한 정보를 꺼내서

쓰면 된다

 

뭐로?

 

super.loadUser(userRequest)

얘로 마우스를 갖다 대 보면

리턴 타입이 OAuth2 User이다

그러면 이제 이메일을 가져와서

이미 등록되어있는지 확인하고

등록되어있다면 로그인하고

아니라면 자동 회원가입 후

로그인시켜주면 된다!

우리가 찾는 정보는 

.getAttributes()안에 있고

.getAttributes()는 map형식이므로

키워드로 찾아주자 

키워드는

System.out.println(oAuth2User); 해주면

해보면 주르륵 나온다

리턴 타입이 object이므로

String으로 강제 변환시켜주고

만약 값이 날이면 처음 온 사용자기 때문에 넣어주면 된다

 

만약 처음이면 회원가입해주고

아니면 로그인만 시키면된다

 

이제 오스 로그인 역시 성공 시

시큐리티 세션에 넣어줘야 한다

 

이전의 principaldetail로 가서

principadetail.java

자체 제공 인터페이스

OAuth2User를 받고

생성자를 하나 더 만들어준다!

public principaldetail(uservo uservo,Map<String,Object>attributes)

그리고 OAuth2User 들고 있는 함수를

강제 오버라이드를 한다

마지막으로

new principaldetail

시큐리티 세션에 넣어주면된다!

 

확인해보자!

 

db
mypage

짠 잘 들어갔다 

이름/이메일은 실제 사용 중인 거여서 잘랐다!

 

근데 허점이 있다

자 구글이 아니라 페이스북이면? 네이버면?

다음번에 그 허점을 보완해보자!