본문 바로가기

프로젝트

웹 개발 - 프로젝트 2 - 13. 이메일 인증

회원가입 기능이 있는 서비스에서 아무런 인증 없이 사람들을 받으면 계정을 막 만들어서 DB를 터트리거나 유령 계정이 만들어지는 등 문제가 생길 수 있습니다. 그래서 이메일 인증 같은 방식을 적용을 합니다. 물론 이정도 크기의 서비스에서는 큰 문제가 없겠지만 그래도 한번 적용해 봅시다.

메일 전송

이메일 인증은 보통 다음 과정으로 이루어 집니다.

 

1. 유저가 입력한 이메일로 코드 전송 ex) NSDG-JEIT

2. 유저는 이메일에 있는 코드를 입력

3. 코드가 일치하면 인증 완료

 

메일 전송은 이전 포스트를 참조하면 세팅을 할 수 있습니다.

우선 request부터 만듭니다.

 

회원가입과 비밀번호 찾기 2개를 지원할 것이기 때문에 type을 넣어줍니다.

 

이메일 전송 기능을 만듭니다.

 

setTo : 받는 사람
setSubject : 제목
setText : 본문
createCode :  코드 생성
setContext : 본문 생성 함수

 

코드는 대문자 8개로 만들 것입니다.

 

본문에 생성한 코드를 넣습니다. type은 "email"이 넘어갈 것입니다.

 

email에 해당하는 템플릿을 만듭니다.

 

이제 실행을 하면 메일이 성공적으로 오는 것을 확인할 수 있습니다.

임시 DB 생성

인증코드를 저장하는 DB를 만들어도 되지만 이 정보를 오래 저장하고 있을 필요는 없으니 메모리에 저장해 두도록 하겠습니다.

 

우선 DB의 컬럼을 만듭니다.

 

그리고 repository도 하나 만들어 줍니다. 우선 이메일로 찾기 기능을 만들어 둡니다.

 

생각해 보니 저장도 해야 하네요. 저장 기능도 추가해 줍니다.

 

그리고 메일을 보낼 때 메모리DB에 코드를 저장해 줍니다.

 

인증하기

이제 인증코드가 일치하면 인증을 해 주면 됩니다.