Search

29. 스프링부트 포토그램 인증 로그인 세션정보 확인해보기

포토그램 인증 구현하기

로그인구현

보통 세션에 저장될때는 key value 방식으로 저장되는데
시큐리티 관련된 정보가 세션에 저장될때는 저렇게
securityContextHolder → Authenticantion → PrincipalDetails → User오브젝트
이런식으로 꺼내서 써야한다… 너무 복잡해진다.
그래서 만들어진 어노테이션이 있다.
@AuthenticationPrincipal 이걸 쓰면 바로 Authenticantion객체에 접근할 수 있다.
UserController.java
@GetMapping("/user/{id}/update") public String update(@PathVariable String id, @AuthenticationPrincipal PrincipalDetails principalDetails) { System.out.println("세션 정보 :" +principalDetails.getUser()); return "user/update"; }
Java
복사
이제 회원정보 변경을 딱 클릭하면 세션정보가 콘솔에 찍힐거다
세션 정보 :User(id=1, username=ssar, password=$2a$10$pMt6/I1NkCjWSuu4vkmQquEv0JbIDurnlaOv6SoYGOVfiJM88ybRq, name=, website=null, bio=null, email=ssar@nate.com, phone=null, gender=null, profileImageUrl=null, role=ROLE_USER, createDate=2023-08-21T21:12:19.817644) 세션 정보 :User(id=1, username=ssar, password=$2a$10$pMt6/I1NkCjWSuu4vkmQquEv0JbIDurnlaOv6SoYGOVfiJM88ybRq, name=, website=null, bio=null, email=ssar@nate.com, phone=null, gender=null, profileImageUrl=null, role=ROLE_USER, createDate=2023-08-21T21:12:19.817644)
Java
복사
잘나온다.
그럼 아까 이미지에서 복잡하게 찾는 세션방법도 보면은
@GetMapping("/user/{id}/update") public String update(@PathVariable String id, @AuthenticationPrincipal PrincipalDetails principalDetails) { Authentication auth = SecurityContextHolder.getContext().getAuthentication(); System.out.println("직접 찾은 세션 정보 :" +auth.getPrincipal()); return "user/update"; }
Java
복사
직접 찾은 세션 정보 :PrincipalDetails(user=User(id=1, username=ssar, password=$2a$10$pMt6/I1NkCjWSuu4vkmQquEv0JbIDurnlaOv6SoYGOVfiJM88ybRq, name=, website=null, bio=null, email=ssar@nate.com, phone=null, gender=null, profileImageUrl=null, role=ROLE_USER, createDate=2023-08-21T21:12:19.817644))
Java
복사
근데 PrincipalDetails 안에 속해 있으니까 다시
@GetMapping("/user/{id}/update") public String update(@PathVariable String id, @AuthenticationPrincipal PrincipalDetails principalDetails) { Authentication auth = SecurityContextHolder.getContext().getAuthentication(); PrincipalDetails mPrincipalDetails = (PrincipalDetails)auth.getPrincipal(); System.out.println("직접 찾은 세션 정보 :" +mPrincipalDetails.getUser()); return "user/update"; }
Java
복사
직접 찾은 세션 정보 :User(id=1, username=ssar, password=$2a$10$pMt6/I1NkCjWSuu4vkmQquEv0JbIDurnlaOv6SoYGOVfiJM88ybRq, name=, website=null, bio=null, email=ssar@nate.com, phone=null, gender=null, profileImageUrl=null, role=ROLE_USER, createDate=2023-08-21T21:12:19.817644)
Java
복사
결국은 그냥 첫번째 방식이 제일 깔끔하고 추천!

*참고