SOLUX-완숙이
회원가입 시 password를 암호화하여 저장하기
leeeehhjj
2022. 1. 12. 16:56
회원가입 시 회원들의 password를 그대로 저장하면 보안 문제가 있기 때문에 password를 암호화해서 저장해야 한다.
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.csrf().disable()
.httpBasic()
.and()
.authorizeRequests()
.antMatchers("/**").permitAll();
//.antMatchers("/**").hasAnyRole("ADMIN","USER");
}
@Bean
public PasswordEncoder passwordEncoder() {
return PasswordEncoderFactories.createDelegatingPasswordEncoder();
}
}
먼저 WebSecurityConfig 클래스 안에 PasswordEncoder 인터페이스의 암호화 방식을 PasswordEncoderFactories.createDelegatingPasswordEncoder로 하는 코드를 작성하고 PasswordEncoder를
@Bean 어노테이션을 통해 bean 등록을 한다.
private final PasswordEncoder passwordEncoder;
@Transactional
public Long signUp(MemberSaveDto memberSaveDto) {
Member member = Member.builder()
.name(memberSaveDto.getName())
.nickName(memberSaveDto.getNickName())
.email(memberSaveDto.getEmail())
.password(passwordEncoder.encode(memberSaveDto.getPassword()))
.loginId(memberSaveDto.getLoginId())
.roles(Collections.singletonList("ROLE_USER"))
.build();
return memberRepository.save(member).getId();
}
그 후 MemberService에서 password를 저장할 때 passwordEncoder.encode 코드를 통해 암호화한다.