UserDetails 인터페이스의 loadUserByUsername 메서드 예외 처리

gminnimk·2025년 9월 19일

문제 해결

목록 보기
13/18

기존 UserDetails 의 loadUserByUsername 메서드에서 에러 코드를 한곳에서 관리하는 ErrorCode 의 통일성을 위해 CustomeException 을 사용하였으나 이 부분에서 예외 타입 정합성에 대한 문제를 인지하였습니다.


기존 코드

@Override
    public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
        return userRepository.findByUsername(username)
                .map(UserDetailsImpl::build)
                .orElseThrow(() -> new CustomException(ErrorCode.USER_NOT_FOUND));
    }

개선된 코드

loadUserByUsername에서 UsernameNotFoundException 대신 커스텀 예외를 던지면 Spring Security의 표준 흐름과 어긋날 수 있기에

.orElseThrow(() -> new UsernameNotFoundException("User not found: " + username));

와 같이 수정하였습니다.

0개의 댓글