유튜브에서 스프링시큐리티를 심화교육하면서 조금더 레벨업 하고자 한다.
IDE : IntelliJ
언어 : Java 8
스프링부트 버전 : 2.7.13
DB : MySQL
빌드관리 도구 : Maven
OS : iOS
참고유튜브 : 메타코딩
IndexController에서 세션에 저장되어 있는 유저의 정보를 확인해보자
우선 일반 로그인한 유저는 UserDetails타입으로 확인해볼 수 있고
세션에는 Authentication에 저장되어 있는 유저의 정보를 PrincipalDetails로 형변환을 한 후 확인해볼 수 있다.
@GetMapping("/test")
public @ResponseBody String test(Authentication authentication, @AuthenticationPrincipal UserDetails details){
UserDetails authenticationDetail = (UserDetails) authentication.getPrincipal();
System.out.println("id test PrincipalDetails : "+details.getUsername());
System.out.println("id test (userDetails)authentication : "+authenticationDetail.getUsername());
return "테스트입니다.";
}
출력을 해보기 위해서 PrincipalDetails에 getter 를 추가해줘야 하기 때문에 Data 어노테이션을 추가해준다.
서버를 실행해서 로그인 후 /test 로 이동하면 콘솔에 두가지 방법으로 유저의 아이디를 확인해볼 수 있다.
OAuth 로그인한 유저의 정보도 확인해보자
마찬가지로 세션에 저장되어 있는 유저의 정보를 확인해보기 위해 authentication과 OAuth2User를 파라메터로 받아서 유저의 정보를 출력해본다. authentication에서 유저의 정보를 가져오기 위해선 OAuth2User로 형변환을 해줘야한다.
@GetMapping("/oauthtest")
public @ResponseBody String oauthtest(Authentication authentication, @AuthenticationPrincipal OAuth2User oAuth2User){
OAuth2User authenticationOAuth = (OAuth2User) authentication.getPrincipal();
System.out.println("id test oAuth2User: "+ oAuth2User.getAttributes());
System.out.println("id test (OAuth2User)authenticationOAuth: "+ authenticationOAuth.getAttributes());
return "oauth 테스트입니다.";
}
서버를 실행해서 구글로 로그인 후 /oauthtest 로 이동하면 콘솔에 마찬가지로 두가지 방법으로 유저의 아이디를 확인해볼 수 있다.
일반로그인한 유저는 UserDetails타입으로 확인이 가능하고 구글로그인한 유저는 OAuth2User타입으로 확인이 가능하고 관리를 한다면
상당히 복잡스럽게 관리를 해야할 것이다.
그래서 이 두가지를 한곳에 상속을 시켜서 관리를 하면 훨씬 편하게 관리를 할 수 있기 때문에
PrincipalDetails에 UserDetails와 OAuth2User를 상속받아서 한번에 관리를 해보자
UserDetails는 이미 상속을 받은 상태이기 때문에 OAuth2User를 상속받아서 생성자를 추가해준다. (윈도우/맥 단축키 ctrl+o)
그후 파라메터로 PrincipalDetails를 받아서 테스트를 진행해보면 일반로그인유저와 OAuth로그인 유저를 principalDetails하나로 관리할 수 있다.
'프로젝트 > SpringSecurity' 카테고리의 다른 글
[Spring Security] 8. OAuth 페이스북로그인 (0) | 2023.07.06 |
---|---|
[Spring Security] 7. OAuth 구글로그인(4) (0) | 2023.07.05 |
[Spring Security] 5. OAuth 구글로그인(2) (0) | 2023.07.04 |
[Spring Security] 4. OAuth 구글로그인(1) (0) | 2023.07.04 |
[Spring Security] 3. 권한부여&오류수정과정 (0) | 2023.07.04 |
댓글