Post

[Springboot] 포토그램 회원가입 기능 구현하기(2) - 비밀번호 암호화


아이티윌의 국비지원 [스프링부트 SNS 포토그램 프로젝트] 강의를 수강하며 정리한 내용입니다.


오늘의 실습

  • 회원가입 시 비밀번호 암호화 하기


🔎그 전에 알아야할 것


BCryptPasswordEncoder이란?

Spring Security에서 제공하는 비밀번호 인코딩 클래스이다. 사용자의 비밀번호를 안전하게 해시화하여 저장하고, 사용자가 로그인할 때 입력한 비밀번호를 저장된 해시화된 비밀번호와 비교하여 인증하는 데 사용된다.


실습


[SecurityConfig.java]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
@RequiredArgsConstructor
@Configuration //IoC
public class SecurityConfig {
	
	@Bean // 추가
	BCryptPasswordEncoder encoder() {
		return new BCryptPasswordEncoder();
	}
	
	@Bean
	SecurityFilterChain configure(HttpSecurity http) throws Exception {
			
		http.csrf().disable();
		http.authorizeRequests()
					... 생략
		return http.build();
	}
}

BCryptPasswordEncoder를 빈으로 등록해준다. 그럼 다른 곳에서 이 빈을 주입받아 사용할 수 있다.



[AuthService.java]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
package com.cos.photogramstart.service;

@RequiredArgsConstructor
@Service // 1. IoC 2. 트랜잭션 관리
public class AuthService {
    
    private final UserRepository userRepository;
    private final BCryptPasswordEncoder bCryptPasswordEncoder; // 추가

    @Transactional
    public User 회원가입(User user) {
        // 회원가입 진행
        String rawPassword = user.getPassword(); // 추가
        String encPassword = bCryptPasswordEncoder.encode(rawPassword); // 추가
        user.setPassword(encPassword); // 추가
        user.setRole("ROLE_USER"); // 추가
        User userEntity = userRepository.save(user);
        return userEntity;
    }
}

private final BCryptPasswordEncoder bCryptPasswordEncoder;

BCryptPasswordEncoder는 Spring Security에서 제공하는 비밀번호 인코딩 기능을 사용하기 위한 빈.

String rawPassword = user.getPassword();

사용자 객체에서 비밀번호를 가져와서 rawPassword 변수에 저장.

String encPassword = bCryptPasswordEncoder.encode(rawPassword)

BCryptPasswordEncoder를 사용하여 rawPassword를 해시화하여 암호화된 비밀번호 생성.

user.setPassword(encPassword);

사용자 객체에 암호화된 비밀번호 설정.

user.setRole(“ROLE_USER”);

사용자의 역할을 “ROLE_USER”로 설정.


123


DB에 비밀번호가 암호화 되어 있는 것을 확인!
같은 이름으로 회원가입을 했을 때 오류 페이지가 뜨는 것을 확인했다면 성공!


This post is licensed under CC BY 4.0 by the author.