회원가입시 비밀번호 암호화(bCrypto)

2024. 12. 24. 22:42·토이 프로젝트 2

참고 : 회원가임 화면 구현 게시물에는 온전히 구현한 것이 들어가 있음.

 

비밀번호를 암호화하기 위해서는 Security의 BCryptPasswordEncoder를 사용해야함. 

때문에 build에 의존성을 주입.

implementation 'org.springframework.security:spring-security-crypto' // 암호화 추가

 

또 비밀번호가 일치하는지 확인하기 위해서 

아래처럼 .matches를 써주어서 확인해주어야 함.

public Member login(String loginEmail, String password) {
    // 이메일로 사용자 검색
    return memberRepository.findByEmail(loginEmail)
            .filter(member -> passwordEncoder.matches(password, member.getPassword())) // 비밀번호 확인
            .orElseThrow(() -> new IllegalArgumentException("이메일 또는 비밀번호가 일치하지 않습니다.")); // 일치하지 않으면 null 반환
}

 

 

private final BCryptPasswordEncoder passwordEncoder; // BCryptPasswordEncoder 추가



// 회원 생성
@Transactional
public Long join(MemberDto memberDto) { // Controller에서 memberDto객체를 전달 받음.
    // 1. dto의 이메일 중복체크 메서드.
    validateDuplicateMember(memberDto.getEmail(), memberDto.getPhoneNumber());

    // 비밀번호 암호화
    String encryptedPassword = passwordEncoder.encode(memberDto.getPassword());


    // 2. 중복이 아니면 member에 정보 저장.
    Member member = Member.builder()
            .email(memberDto.getEmail())
            .name(memberDto.getName())
            .password(encryptedPassword)
            .nickName(memberDto.getNickname())
            .phoneNumber(memberDto.getPhoneNumber())
            .memberType(MemberType.MEMBER)
            .build();
    // 확인용
    System.out.println("member = " + member);

    // 3. 리포지터리에 저장.
    memberRepository.save(member);
    return member.getId(); // member id 리턴.( id를 왜 리턴한다고 적었지?)

}

'토이 프로젝트 2' 카테고리의 다른 글

로그인 횟수 제한 구현  (0) 2024.12.28
비밀번호 찾기 구현  (1) 2024.12.27
Interceptor(권한) 구현  (1) 2024.12.26
커스텀 어노테이션 추가, ExceptionHandler 추가  (0) 2024.12.25
회원가입화면 만들기  (0) 2024.12.17
'토이 프로젝트 2' 카테고리의 다른 글
  • 비밀번호 찾기 구현
  • Interceptor(권한) 구현
  • 커스텀 어노테이션 추가, ExceptionHandler 추가
  • 회원가입화면 만들기
신댕인생
신댕인생
안녕하세요!! 예비개발자 신댕입니다. 개발자를 준비하고 있는 신댕인생의 하루하루를 정리하고 있어요. 파이팅!
  • 신댕인생
    신댕인생
    신댕인생
  • 전체
    오늘
    어제
    • 분류 전체보기 (127)
      • 다시 준비 (0)
        • 계획(ISTJ) (0)
        • 정보처리기사 (0)
        • SQLD (0)
        • Toeic Speaking (0)
        • 일일 회고 (0)
      • 데브캠프 일지 (52)
        • 예제 (6)
        • 연습문제 (12)
        • 과제 (2)
        • 칠판 정리 (1)
        • 숙지용 필기 (11)
      • 책 (12)
        • Clean Architecture (2)
        • 개발자도 궁금한 IT 인프라 (1)
        • JVM 밑바닥까지 파헤치기 (9)
      • DB (23)
        • 숙지용 필기 (12)
        • SQL 쿼리 실습 (7)
        • 극장 시스템 모델링 (3)
      • 토이 프로젝트 2 (7)
      • 토이 프로젝트 3 (0)
      • 뚜띠 (3)
      • 회고 (0)
        • 주간 회고 (0)
        • 월간 회고 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    패스트캠퍼스 데브캠프
    spring의 정석
    spring
    남궁성
    jvm
    연습문제
    자바의 정석
    지네릭스
    SQL
    쿼리 실습
    패스트캠퍼스
    데브캠프
    ERD
    JPA
    패스트캠퍼스 부트캠프
    패스트 캠퍼스
    부트캠프
    머신러닝 교과서
    백엔드 부트캠프
    sql의 정석
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
신댕인생
회원가입시 비밀번호 암호화(bCrypto)
상단으로

티스토리툴바