티스토리 뷰
728x90
반응형
JWT를 이용한 로그인 자체는 쉽게 구현했으나, 로그인 한 정보를 핸들러메서드에서 불러오는 방법을 몰라
며칠을 고민했던 기억이 있다.
어쨌거나 결국 찾긴 찾았고, 더 좋은 방법을 지금도 틈틈히 찾고 있지만 아직까진 발견할 수가 없다.
로그인 구현은 시간이 나면 정리하기로 하고, 웹플럭스에서 사용자 정보를 가져오는 코드는 아래와 같다.
public Mono<User> getCurrentUser() {
return ReactiveSecurityContextHolder.getContext()
.map(SecurityContext::getAuthentication)
.map(Principal::getName)
.switchIfEmpty(Mono.error(new UserNotFoundException()))
.flatMap(userRepository::findByEmail);
}
적어놓고 보니 웹플럭스를 사용하지 않을 때와 크게 다르지 않다.
시큐리티 컨텍스트 홀더에서 인증정보를, 거기서 이메일 주소를 얻어 사용자를 가져온다.
만약 없는 사용자라면(쿼리 결과가 비어있다면) 예외를 던지는 코드도 함께 작성했다.
내 경우는 유저 패키지에 서비스 클래스를 만들어서 위와 같은 메서드를 만들어 독립시킨 후,
아래와 같이 사용했다.
Mono<User> currentUserMono = userService.getCurrentUser();
Mono<Rating> ratingMono = currentUserMono
.flatMap(user ->
// ...
MVC 패턴에서 했던 것처럼 애너테이션으로 처리하고 싶은데, 방법을 잘 몰라서 일단 여기까지만.
반응형
'Java+Spring > WebFlux' 카테고리의 다른 글
[WebFlux]자주 사용하는 연산자 정리(2) - buffer (0) | 2023.05.21 |
---|---|
[WebFlux]함수형 엔드포인트에서의 유효성 검증 (4) | 2023.04.07 |
[WebFlux]라우터, 함수형 엔드포인트 (2) | 2023.04.07 |
[WebFlux]Reactive MongoDB - 쿼리, 정렬, 페이지네이션 (2) | 2023.04.05 |
[WebFlux]RSocket 튜토리얼 (1) | 2023.04.03 |
[WebFlux]Reactive MongoDB - Criteria (2) | 2023.04.03 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 중남미
- 백준
- 여행
- java
- 세계일주
- 스프링
- 야경
- 스트림
- 세모
- 유럽여행
- 파이썬
- a6000
- 세계여행
- 지지
- 알고리즘
- BOJ
- 리스트
- 칼이사
- Python
- 맛집
- 자바
- 동적계획법
- spring
- RX100M5
- 유럽
- 남미
- Algorithm
- 면접 준비
- 기술면접
- Backjoon
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함