이전에 자체 로그인시 사용되는 이메일이, oauth2를 통해 로그인하는 구글 이메일과 같을때 다른 유저라고 생각하고 구현을 했었다

 

각각 테스트를 했을때는 정상적으로 작동이 되었지만, oauth2로 로그인된 이메일이 이미 db에 저장되어 있을때 회원가입은 정상적으로 되지만 로그인이 안되는 현상을 발견했다

 

oauth2 로그인과 자체 로그인은 provider로 구분하게 해놓았는데, 이부분에서는 구분이 안되니 여기서 문제가 생겼을 것이라 생각했다

하지만 UsernamePasswordAuthenticationToken은 이름에서도 알 수 있듯이 유저 아이디와, 비밀번호로만 생성이 가능했고, provider를 사용하기 위해서는 새롭게 custom을 해야하나? 아니면 이미 구현된 CustomUserDetails에서 새롭게 provider을 변수를 생성해야하나? 고민을 하게 되었다

 

그러면서 이미 구현된 코드들을 보던 도중 발견해버렸다

 CustomUserDetailsService에서 findByEmail을 사용하고 있다는 것을...

바로 findByEmailAndProvider을 적용했더니 로그인이 정상적으로 되었다!

 

 


여전히 spring security는 너무 어렵다

지금은 spring security가 어떻게 동작하는지 얄팍하게 알고있었다면, 프로젝트가 끝난후에는 spring security가 어떻게 동작하는지 제대로 공부하고 정리해놓아야겠다

복사했습니다!