자 이제 loaduser를 작성할 건데
그전에 근데 사실 지금도 로그인이 된다
다만 우리가 원하는 값없이
id값만 딸랑 받아서 오게 될 뿐이다
OAuth2UserRequest userRequest
얘가 들고 온 정보를 빼내면 된다
열어보면
막 뭐를 열심히 들고 와 줬는데
이제 우리가 필요한 정보를 꺼내서
쓰면 된다
뭐로?
super.loadUser(userRequest)
얘로 마우스를 갖다 대 보면
리턴 타입이 OAuth2 User이다
그러면 이제 이메일을 가져와서
이미 등록되어있는지 확인하고
등록되어있다면 로그인하고
아니라면 자동 회원가입 후
로그인시켜주면 된다!
우리가 찾는 정보는
.getAttributes()안에 있고
.getAttributes()는 map형식이므로
키워드로 찾아주자
키워드는
System.out.println(oAuth2User); 해주면
해보면 주르륵 나온다
리턴 타입이 object이므로
String으로 강제 변환시켜주고
만약 값이 날이면 처음 온 사용자기 때문에 넣어주면 된다
만약 처음이면 회원가입해주고
아니면 로그인만 시키면된다
이제 오스 로그인 역시 성공 시
시큐리티 세션에 넣어줘야 한다
이전의 principaldetail로 가서
자체 제공 인터페이스
OAuth2User를 받고
생성자를 하나 더 만들어준다!
public principaldetail(uservo uservo,Map<String,Object>attributes)
그리고 OAuth2User 들고 있는 함수를
강제 오버라이드를 한다
마지막으로
시큐리티 세션에 넣어주면된다!
확인해보자!
짠 잘 들어갔다
이름/이메일은 실제 사용 중인 거여서 잘랐다!
근데 허점이 있다
자 구글이 아니라 페이스북이면? 네이버면?
다음번에 그 허점을 보완해보자!
'Spring boot kim's cafe > oauth로그인' 카테고리의 다른 글
Springboot 네이버로그인!(3) 완료 with Authentication ,AuthenticationManager,SecurityCont (0) | 2021.07.10 |
---|---|
Springboot 네이버로그인!(2) 토큰받기! (0) | 2021.07.10 |
Springboot 네이버로그인!(1) code받기 state만들기 (0) | 2021.07.10 |
Springboot 구글로그인!(3) with interface (0) | 2021.06.16 |
Springboot 구글 로그인!(1) with oauth2 (0) | 2021.06.16 |