session - Authentication object(userdetails, oauth2user)
This commit is contained in:
@@ -9,13 +9,17 @@ package com.spring.security1.config.auth;
|
||||
// Security Session => Authentication => UserDetails
|
||||
|
||||
import com.spring.security1.model.User;
|
||||
import lombok.Data;
|
||||
import org.springframework.security.core.GrantedAuthority;
|
||||
import org.springframework.security.core.userdetails.UserDetails;
|
||||
import org.springframework.security.oauth2.core.user.OAuth2User;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Map;
|
||||
|
||||
public class PrincipalDetails implements UserDetails {
|
||||
@Data
|
||||
public class PrincipalDetails implements UserDetails, OAuth2User {
|
||||
|
||||
private User user;
|
||||
|
||||
@@ -68,4 +72,14 @@ public class PrincipalDetails implements UserDetails {
|
||||
// 현재시간 - 로그인 시간 => 1년을 초과하면 false 리턴
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, Object> getAttributes() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,10 +12,13 @@ public class PrincipalOauth2UserService extends DefaultOAuth2UserService {
|
||||
// 구글로부터 받은 userRequest 데이터에 대한 후처리 되는 함수
|
||||
@Override
|
||||
public OAuth2User loadUser(OAuth2UserRequest userRequest) throws OAuth2AuthenticationException {
|
||||
System.out.println("userRequest: "+ userRequest.getClientRegistration());
|
||||
System.out.println("userRequest: "+ userRequest.getClientRegistration()); // registrationId로 어떤oauth로 로그인했는지 확인가능.
|
||||
System.out.println("userRequest: "+ userRequest.getAccessToken().getTokenValue());
|
||||
// 구글 로그인 버튼 클릭 -> 구글 로그인 창 -> 로그인을 완료 -> code를 리턴(OAuth-Client 라이브러리) -> AccessToken 요청
|
||||
// userRequest 정보 -> loadUser함수 -> 구글로 부터 회원 프로필 받아준다.
|
||||
System.out.println("userRequest: "+ super.loadUser(userRequest).getAttributes());
|
||||
|
||||
OAuth2User auth2User = super.loadUser(userRequest);
|
||||
return super.loadUser(userRequest);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,11 +1,16 @@
|
||||
package com.spring.security1.controller;
|
||||
|
||||
import com.spring.security1.config.auth.PrincipalDetails;
|
||||
import com.spring.security1.model.User;
|
||||
import com.spring.security1.repository.UserRepository;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.security.access.annotation.Secured;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import org.springframework.security.core.Authentication;
|
||||
import org.springframework.security.core.annotation.AuthenticationPrincipal;
|
||||
import org.springframework.security.core.userdetails.UserDetails;
|
||||
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
|
||||
import org.springframework.security.oauth2.core.user.OAuth2User;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
@@ -18,6 +23,30 @@ public class IndexController {
|
||||
private final UserRepository userRepository;
|
||||
private final BCryptPasswordEncoder bCryptPasswordEncoder;
|
||||
|
||||
@ResponseBody
|
||||
@GetMapping("/test/login")
|
||||
public String testLogin(Authentication authentication,
|
||||
@AuthenticationPrincipal PrincipalDetails userDetails) {
|
||||
System.out.println("/test/logtin ================");
|
||||
PrincipalDetails principalDetails = (PrincipalDetails) authentication.getPrincipal();
|
||||
System.out.println("authentication: " + principalDetails.getUser());
|
||||
|
||||
System.out.println("userDetails: " + userDetails.getUser());
|
||||
return "세션 정보 확인하기";
|
||||
}
|
||||
|
||||
@ResponseBody
|
||||
@GetMapping("/test/oauth/login")
|
||||
public String testOAuthLogin(Authentication authentication,
|
||||
@AuthenticationPrincipal OAuth2User oAuth) {
|
||||
System.out.println("/test/logtin ================");
|
||||
OAuth2User oAuth2User = (OAuth2User) authentication.getPrincipal();
|
||||
System.out.println("authentication: " + oAuth2User.getAttributes());
|
||||
System.out.println("Oauth2User: " + oAuth.getAttributes());
|
||||
|
||||
return "OAuth 세션 정보 확인하기";
|
||||
}
|
||||
|
||||
@GetMapping({"", "/"})
|
||||
public String index() {
|
||||
// 머스테치 기본폴더 src/main/resources/
|
||||
|
||||
Reference in New Issue
Block a user