security 없이 암호화 하기(단방향은 다 HASH) → 복호화 불가능
라이브러리 설치
// https://mvnrepository.com/artifact/org.mindrot/jbcrypt implementation group: 'org.mindrot', name: 'jbcrypt', version: '0.4'
회원가입
코드 작성

테스트 코드 작성

salt 오류 발생 다시 테스트


코드 수정
@PostMapping("/join") public String join(UserRequest.JoinDTO requestDTO) { // @ResponseBody를 적으면 파일을 반환하는것이 아니라 메시지를 반환한다. System.out.println(requestDTO); String rawPassword = requestDTO.getPassword(); String encPassword = BCrypt.hashpw(rawPassword,BCrypt.gensalt()); requestDTO.setPassword(encPassword); // 1. 유효성 검사 if (requestDTO.getUsername().length() < 3) { return "error/400"; } // 2.동일 username 체크 (나중에 하나의 트랜잭션으로 묶는게 좋다.) User user = userRepository.findByUsername(requestDTO.getUsername()); try{ userRepository.save(requestDTO); }catch (Exception e){ throw new RuntimeException("아이디가 중복되었어요"); } return "redirect:/loginForm"; }
더미 데이터 수정
insert into user_tb(username, password, email, created_at) values('ssar', '$2a$10$NU03go6lJRh9RRUHvmrjwuAKOJsG6/Q/scvGtOwPOu7TDUbqnP2oK', 'ssar@nate.com', now()); insert into user_tb(username, password, email, created_at) values('cos', '$2a$10$NU03go6lJRh9RRUHvmrjwuAKOJsG6/Q/scvGtOwPOu7TDUbqnP2oK', 'cos@nate.com', now());
로그인시에는 암호화를 하지 않기 때문에 로그인은 아직 불가능
로그인
암호화 되기전 패스워드를 암호화하면 매번 다른 값이 나옴
BCrypt.checkpw(로그인패스워드, 데이터베이스에 있는 패스워드) → 비교해주는 메서드 제공


코드 작성
암호화 돼었기 때문에 Password로 조회 불가능 하므로 코드 수정

findByUsername

검증 실패시 코드 작성

정상 작동 확인하기
회원가입


Share article