728x90

스프링 시큐리티를 이용해서 비밀번호 암호화를 해주었다.

 

BCryptPasswordEncoder는 스프링 시큐리티 프레임워크에서 제공하는 클래스 중 하나로 비밀번호를 암호화하는 데 사용할 수 있는 메서드를 가진 클래스이다.

 

@Configuration
public class WebSecurityConfig{
@Bean
public static BCryptPasswordEncoder getPasswordEncoder() {
return new BCryptPasswordEncoder();
}

}

 

 

 

 

 

 

회원가입 시 비밀번호를 암호화 한 후 암호화 한 비밀번호를 DB 에 넣어주었다.

 


String new_password = webSecurityConfig.getPasswordEncoder().encode(memberDTO.getPassword());

Member member = Member.builder()
.email(memberDTO.getEmail())
.password(new_password)
.name(memberDTO.getName())
.build();

 

 

 

 

 

로그인 요청이 온 경우 암호화 된 비밀번호와 matches 를 이용해서 비교해주었다. 

 


// 암화화 된 비밀번호와 일치 여부 체크

if (bCryptPasswordEncoder.matches(loginDTO.getPassword(), member.getPassword())){
return new ResponseEntity("로그인 되었습니다.", HttpStatus.OK);
} else {
return new ResponseEntity("회원 정보가 일치하지 않습니다.", HttpStatus.BAD_REQUEST);
}

 

 

 

 

 

 

테스트도 잘 통과했다.

 

@SpringBootTest
@Transactional

public class pwSecurityTest {

@Autowired BCryptPasswordEncoder bCryptPasswordEncoder;
@Test
public void 암호화_매치_테스트(){

String origin_pw = "1234";
String secure_pw = bCryptPasswordEncoder.encode(origin_pw);

Assertions.assertThat(bCryptPasswordEncoder.matches(origin_pw,secure_pw)==true);

}
}
728x90

+ Recent posts