일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- EC2
- docker명령어
- 검색
- 메소드명
- 테스트메소드
- 컨테이너실행
- 2 > /dev/null
- appspec.yml
- 참조키
- 포트
- 예약
- querydsl
- 추후정리
- 테스트
- WeNews
- Query
- 메세지수정
- 외부키
- subquery
- 서브쿼리
- 적용우선순위
- 커밋메세지수정
- AuthenticationEntryPoint
- application.yml
- MySQL
- ㅔㄴ션
- ubuntu
- appspec
- 네이티브쿼리
- foreignkey
- Today
- Total
제뉴어리의 모든것
Spring Boot 현재 세션 가져오기 본문
Spring에서 인터셉터나 필터, 컨트롤러 등에서 로그인한 사용자 정보를 가져 오고 싶을 때
Authentication auth = SecurityContextHolder.getContext().getAuthentication();
SecurityContextHolder.getContext().getAuthentication().getPrincipal() 와 같이 사용하여 필요한 데이터를 가져오면 된다.
그리고 getPrincipal()로 가져온 객체에서 로그인 유저의 데이터를 가져다가 쓰면 된다. (데이터 구조를 브레이크 포인트를 찍어서 확인해볼것..)
- Get the username of the logged in user: getPrincipal()
- Get the password of the authenticated user: getCredentials()
- Get the assigned roles of the authenticated user: getAuthorities()
- Get further details of the authenticated user: getDetails()
> Spring Security로 인증을 한 유저를 SecurityContextHolder.getContext().getAuthentication().getPrincipal() 써서 Object를 가져왔을때
Spring Security로 인증을 한 유저는 UserDetails 을 implements하고
구현한 객체를 반환한다. (UserDetailsService를 implements 한 구현 service 객체의
loadUserByUsername 함수가 리턴하는 객체)
Member는 UserDetails를 구현 했으므로 loadUserByUsername에서 리턴 가능하다.
> Oauth2로 인증을 한 유저를 SecurityContextHolder.getContext().getAuthentication().getPrincipal() 써서 Object를 가져왔을때 (네이버 로그인)
DefaultOAuth2User 데이터형의 변수를 반환한다.
(OAuth2UserService<OAuth2UserRequest, OAuth2User> 를 implements 한 구현체의 loadUser 함수가 리턴하는 데이터형) 테스트 해보진 않았지만 아마도 OAuth2User 를 구현해 주면 직접 엔티티를 만들어서 핸들링 가능할듯 하다.
참조 : Spring boot 현재 세션 가져오기 (tistory.com)
'Spring Boot' 카테고리의 다른 글
Spring Boot에서 이벤트 사용하기 (0) | 2021.03.23 |
---|---|
controller와 dto, html 에서 배열을 주고 받을때 성공 실패 (0) | 2021.03.18 |
순수 jpa 페이징 처리 (0) | 2021.02.15 |
[JPA] 영속성 컨텍스트와 플러시 이해하기 (0) | 2021.02.09 |
Spring MVC의 동작과정 (0) | 2021.02.02 |