최원종의 개발 블로그

V13-2 로그인시 메서드 수정(암호화 처리) 본문

Spring boot 입문

V13-2 로그인시 메서드 수정(암호화 처리)

chl6698 2026. 6. 2. 11:15

기존 로그인 쿼리 수정

    // 암호화 처리시 사용자의 이름만 받을 수 있도록 쿼리를 수정한다.
    @Query("""
         SELECT distinct u FROM User u 
         LEFT JOIN FETCH  u.roles r
         WHERE u.username = :username         
    """)
    Optional<User> findByUsernameWithRoles(@Param("username") String username);

data.sql 파일에 샘플 데이터 암호화 처리

-- User 테이블 데이터 (5명의 사용자 암호화 처리 버전)
INSERT INTO user_tb (username, password, email, created_at) VALUES
                                                                ('admin', '$2a$10$P/7pu5bD0qMvw2ozkhXIzu1Jqa53LNa5zlsLBot3tr0/CUUapQypK', 'admin@blog.com', NOW()),
                                                                ('ssar',  '$2a$10$P/7pu5bD0qMvw2ozkhXIzu1Jqa53LNa5zlsLBot3tr0/CUUapQypK', 'ssar@nate.com',  NOW()),
                                                                ('cos',   '$2a$10$P/7pu5bD0qMvw2ozkhXIzu1Jqa53LNa5zlsLBot3tr0/CUUapQypK', 'cos@gmail.com',  NOW()),
                                                                ('hong',  '$2a$10$P/7pu5bD0qMvw2ozkhXIzu1Jqa53LNa5zlsLBot3tr0/CUUapQypK', 'hong@naver.com', NOW()),
                                                                ('kim',   '$2a$10$P/7pu5bD0qMvw2ozkhXIzu1Jqa53LNa5zlsLBot3tr0/CUUapQypK', 'kim@daum.net',   NOW());

UserService 로그인 로직 수정

/**
     * 로그인 처리
     * @param loginDTO (사용자가 요청한 로그인 정보)
     * @return User(조회된 정보 세션 저장용)
     */
    public User 로그인(UserRequest.LoginDTO loginDTO) {
        log.info("로그인 서비스 시작");

        // 1. 사용지 계정 여부 확인
        User userEntity = userRepository.findByUsernameWithRoles(loginDTO.getUsername())
                .orElseThrow(() -> {
                    log.warn("로그인 실패 - 사용자 이름 또는 사용자 비번 잘못 입력");
                    return new Exception400("사용자명 또는 비밀번호가 올바르지 않습니다");
                });

        // 2. 암호화 된 비밀번호 검증
        if(!passwordEncoder.matches(loginDTO.getPassword(), userEntity.getPassword())) {
            throw new Exception400("사용자명 또는 비밀번호가 올바르지 않습니다");
        }

        return userEntity;
    }