/////
Search
👮🏻

Create, Update, Delete 시 유저 검증하기

태그
Springboot

로그인한 유저와 토큰을 보낸 유저는 항상 같을까?

현직에서 일해본적도 없고, 제 머릿속에서 나오는게 대부분이라 어쩌면 과할수도 있지 않을까? 하는 생각을 합니다. 하지만, 현재 로그인한 유저와 요청 헤더안에 있는 토큰이 말하는 유저가 같은지 검증을 해야할 것 같았습니다. (돌다리도 두드려 보고 건너랬다고…)
그래서 맨 아래에 이 둘이 같은지 검증하는 메서드를 추가하였습니다.
@Component @RequiredArgsConstructor public class AuthUtil { private final TokenUtil tokenUtil; private final UserRepository userRepository; public Long getLoginUserIndex() { User user = getLoginUser(); Long userId = user.getId(); return userId; } public User getLoginUser() { Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); Object principal = authentication.getPrincipal(); return (User) principal; } public void isLoggedInUserSameCurrentUser (HttpServletRequest request) { Long isLoggedInUserId = getLoginUserIndex(); String accessToken = tokenUtil.getJWTTokenFromHeader(request); Long currentUserId = Long.valueOf(tokenUtil.getUserIdFromToken(accessToken)); if (!isLoggedInUserId.equals(currentUserId)) { throw new ApiException(ErrorType.USER_NOT_AUTHORIZED); } } }
Java
복사