[스프링] User의 password 를 passwordEncoder를 통해 관리하자

구동현·2024년 2월 1일

스프링

목록 보기
20/21

@Configuration
public class PasswordConfig {

    @Bean // bean 수동등록
    public PasswordEncoder passwordEncoder() {
        return new BCryptPasswordEncoder();
    }

}

코드설명

  • 나는 PasswordEncoder 중 BCryptPasswordEncoder를 bean으로 등록해서 비밀번호를 관리해주고 싶어
  • @Component는 비즈니스 로직에만 사용하고, @Bean은 기술적인 로직에 사용한다.
  • BCryptPasswordEncoder를 생성하는 로직 위에 @Bean을 달아준다.
  • 그 @bean이 속한 해당 클래스에 @Configuration을 달아준다.
@SpringBootTest
public class PasswordEncoderTest {

    @Autowired
    PasswordEncoder passwordEncoder;

    @Test
    @DisplayName("수동 등록한 passwordEncoder를 주입 받아와 문자열 암호화")
    void test1() {
        String password = "Robbie's password";

        // 암호화
        String encodePassword = passwordEncoder.encode(password);
        System.out.println("encodePassword = " + encodePassword);

        String inputPassword = "Robbie's password";

        // 복호화를 통해 암호화된 비밀번호와 비교
        boolean matches = passwordEncoder.matches(inputPassword, encodePassword);
        System.out.println("matches = " + matches);
    }
}

정상 작동하는 것을 확인

passwordEncoder.matches(inputPassword, encodePassword)

(암호화 안된 문자열, 암호화된 문자열)을 matches를 통해 true false로 반환할 수 있다.

profile
개발합시다

0개의 댓글