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 코드를 통해 암호화한다.