이메일 인증
- 기능에 대해서는 딱히 설명할 게 없을 듯 하다. 그냥 이메일로 인증 코드를 보내고, 해당 인증 코드를 확인하여 인증하는 방식이다.
- spring boot 프레임 워크에서 제공하는 spring-boot-starter-mail을 사용한다.
- SMTP(Simple Mail Transfer Protocol)는 Gmail의 SMTP 서버를 활용한다.
구조
인증번호 전송
- 사용자에게 이메일을 입력받아,
- 인증 코드를 생성하여 이메일과 함께 DB에 저장한다.
- 인증코드를 이메일로 보내준다.
인증번호 인증
- 이메일과 인증 코드를 받아,
- 일단 이메일로 찾아서 유효한 인증 코드 정보가 있는 지 찾고,
- 유효한 인증 코드 정보와 입력한 인증 코드가 일치하는 지 검증 후
- 인증 성공(인증 코드 무효화 필요) / 실패 를 반환한다.
메모(전체 로직)
gradle 추가 - spring boot starter mail
MailConfig - JavaMailSender, MailProperties 설정
yml - 구글 앱 비밀번호, mail 관련 설정 추가
이메일로 인증번호 전송 로직
- 이메일 받아서
- 인증 코드 생성 (따로 함수)
- email service 에서 sendEmailAuthentication 호출
- message 객체 생성
- 내용을 생성하고
- message에 할당
- 전송
- 전에 발송한 인증코드가 있으면 무효화
- 인증코드 데이터 DB 저장 (UserAuthenticationCodeEntity 필요)
이메일 인증번호 인증 로직
- email과 인증 코드를 받아서
- email로 DB에서 찾고, (없으면 인증 코드 없음 반환)
- 찾은 entity의 코드가 입력된 code와 일치하는 지 확인 (않으면 인증 실패 반환)
- 성공 시 인증 코드 데이터 무효화
- 마찬가지로 패스워드 찾기 인증도. if문으로 조건 추가해서 하면 된다.