Spring Security 구글 아이디로 회원 가입 완료하기

최고요·2023년 4월 25일
2

Spring Security V1 

목록 보기
7/9
post-thumbnail

PrincipalDetails 클래스


Application.java

이전에 PrincipalOauth2UserService파일에 BCryptPasswordEncoder를 @bean 등록하여 사용했더니 순환참조 오류가 발생했습니다.

BCryptPasswordEncoder를 Application.java파일에 @Bean 등록해서 PrincipalOauth2UserService파일에 BCryptPasswordEncoder를@Autowired 하여 사용하면 문제는 해결됩니다.

PrincipalOauth2UserService 클래스


oauth로그인을 한 사용자의 회원가입을 위해 로그인한 사용자의 정보를 가져오도록 코드를 작성했습니다.

그리고 oauth로그인을 한 사용자가 회원DB에 있는 회원인지 email정보를 가져와 확인합니다.

User


oauth로그인한 사용자가 기존 회원 DB에 없다면 회원가입을 시키기위해
회원정보를 받아와야합니다.
@Builder를 사용해서 생성자를 작성합니다.
id값은 DB에 들어가면서 AutoIncrement 되기 때문에 제외시켜 값을 세팅하겠습니다.


PrincipalOauth2UserService

존재하지 않는 회원이 oauth로그인을 시도한 경우 User 클래스 생성자를 통해 값을 세팅하고
userRepository.save(userEntity) 로 세팅한 값을 DB에 저장합니다.

로그인이 완료되면 new PrincipalDerails(userEntity,oAuth2User.getAttributes())
를 리턴하게되어 authentication 에 들어가게됩니다.


IndexController


이제 일반로그인과 oauth로그인을 했을 때 정보를 잘 저장하고 가져오는지 확인해보겠습니다.



일반 로그인을 했을 때 DB에 저장된 값을 정상적으로 가져오는 것을 확인했습니다.
이제 oauth로그인을 해서 값을 정상적으로 저장하고 가져오는지 인해보겠습니다.



로그인이 완료되면서 정상적으로 페이지를 불러왔고


DB에 회원정보가 정상적으로 저장되었습니다.

profile
i'm best

0개의 댓글