스프링시큐리티

Stormi·2022년 8월 18일
0

개발

목록 보기
16/20

우리는 회원가입을 하려면 User 오브젝트가 필요하다!!
OAuth2User와 UserDetails 타입은 User오브젝트를 포함하고 있지 않다. 즉, 시큐리티 세션에서 Authentication을 땡겨와도 User오브젝트를 찾을 수가 없다. 그래서 우리가 PrincipalDetails라는 클래스를 만들고 UserDetails를 impletation해서 User 오브젝트를 품어놔서 체인지하게했다.

스프링시큐리티는 자기만의 세션을 두고 있다. 원래 세션의 영역도 있다.

그런데, 컨트롤러에서 일반로그인할때는 UserDetails타입을 받게 하고, OAuth로그인할때는 OAuth2User 타입으로 받아야하니까 코드가 복잡해진다.

이를 해결하는 방법은

어떤 X라는 클래스를 만들어서 X가 UserDetails를 상속받고, 즉(implements 받고) OAuth2User를 상속받게 두면 X라는 클래스를 그냥 가져다가 쓰면된다. 이 부분은 예전에 시큐리티를 사용하지 않고 OAuth로그인을 구현했던 방식이랑 동일하다. !!!!!

즉, 이것이 이미 UserDetails를 implements 받아서 Authentication 객체안에 넣고있는 PrincipalDetails도 OAuth2User를 implements받게하면된다.

인프런강의 시큐리티 무료강의를 수강했습니다.

0개의 댓글