개요
카카오 소셜 로그인을 구현하고 토큰을 발급하여, 인증 정보를 토큰으로 관리하는 프로세스를 구현했다.
Authentication 객체를 통해 인증된 유저 정보를 활용할 수도 있었다.
하지만 해당 방법은 사용할 수 있는 유저 정보가 제한적이고, 중복되는 코드가 많아지는 단점이 존재한다.
그래서 AOP와 Authentication 객체를 활용해서 메서드 호출 전에 유저 정보를 주입해보자.
구현
CurrentUserInfo
유저 정보 주입을 통해 생성되는 객체이며, 실질적으로 비즈니스 로직에서 사용되는 객체다.
현재 필요한 정보인 유저 ID만 존재한다.
AssignCurrentUserInfo
해당 어노테이션이 달린 메서드만 호출 전에 유저 정보 주입이 실행된다.
AssignCurrentUserInfoAspect
로직마다 주석을 달아놨기 때문에 자세한 설명은 생략한다.
@AssignCurrentUserInfoAspect가 달린 메서드는 호출 전에 유저 정보 주입을 수행한다.
현재는 예외 처리 로직이 없기 때문에 RuntimeException()으로 예외를 처리했다.
추후에는 세부 예외 처리가 필요하다.
결론
AOP와 Spring Security를 통해 유저 정보를 미리 주입하는 로직을 완성했다.
해당 기능을 통한 효과는 인증 정보에 대한 추가 검증이 가능하고, 인증 정보를 가져오는 중복 코드를 제거할 수 있었다.
비즈니스 로직에서 예시를 살펴보자면 아래와 같다.
기존 코드
이후 코드
너무 극단적인 예시긴 하지만, 기존에는 로그인 구현 전이기 때문에 프론트단에서 requestDTO에 유저 정보를 함께 보냈었다.
이후 코드에서는 메서드 호출 전에 유저 정보를 생성해서 사용할 수 있다.
덕분에 프론트단에서 유저에 대한 추가 정보를 보낼 필요 없이 오직 토큰만 제대로 보내면 된다.
굿 ! 🌈 🏃🏻➡️
'프로젝트' 카테고리의 다른 글
CompletableFuture를 활용한 도서 베스트셀러 저장 성능 개선 (1) | 2024.10.24 |
---|---|
RESTful한 path 설계하기 (0) | 2024.10.05 |
[지성인] JaCoCo 테스트 분석 도구 적용, 프로젝트 테스트 커버리지 확인 (1) | 2024.07.09 |
[지성인] 한줄평 좋아요 중복 생성 동시성 문제 (0) | 2024.07.06 |