참고 : 회원가임 화면 구현 게시물에는 온전히 구현한 것이 들어가 있음.
비밀번호를 암호화하기 위해서는 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 |