[TIL] 220613

Moon·2022년 6월 13일

✨ Spring

패스워드 암호화

  • 패스워드는 평문으로 저장되면 정보통신망법과 개인정보보호법 위반이기 때문에 암호화(Encryption)이 의무이다. 암호화는 되지만 복호화는 불가능한 일방향 알고리즘을 사용해 암호화해야 한다.

BcryptPasswordEncoder : 스프링 시큐리티에서 제공해주는 클래스
객체를 만들어 @Bean으로 넣어주면 다른 곳에서도 사용 가능하다.

    @Bean
    public BCryptPasswordEncoder encodePassword() {
        return new BCryptPasswordEncoder();
    }

UserService에서는 Bean으로 등록한 encoder를 주입받는다. (주입받으면 UserService가 인코더를 가지게 된다.)

    @Autowired
    public UserService(UserRepository userRepository, PasswordEncoder passwordEncoder) {
        this.userRepository = userRepository;
        this.passwordEncoder = passwordEncoder;
    }

string 내용을 넣어주면 인코더를 통해 그 결과로 복호화된 패스워드가 나온다.

public void registerUser(SignupRequestDto requestDto) {
	...
    
    String password = passwordEncoder.encode(requestDto.getPassword());
    String email = requestDto.getEmail();
    
}

복호화된 패스워드를 DB에 저장해주면 된다.


JUnit test에서 assertThat()과 쓰이는 연산자

isEqulTo() : 값을 비교하는 메서드 - 객체를 비교하게 되면 참조를 비교함

isSameAs() : 주소를 비교하는 메서드


  • 프로젝트 시작 전에 Spring+JPA에 더 익숙해져야 할 것 같다. 그리고 프로젝트 API 보면서 스프링으로 구현하면 어떤 식으로 해야할지 미리 생각해보고 연습도 해봐야 겠다.
profile
매일 성장하는 개발자 되기😊

0개의 댓글