2부: 이메일 인증

터치베이스 구축의 세 번째 편에서는 Couchbase, 노드 메일러 및 Sendgrid 웹 API를 사용하여 이메일 인증 시스템을 만드는 방법에 대해 자세히 설명합니다. 가장 먼저 해야 할 일은 몇 가지 노드 모듈을 다운로드하는 것입니다.

처음 두 번의 분할, 파트 0 그리고 1부에서는 각각 데이터 모델과 사용자 문서 생성을 다룹니다.

플랫폼 요구 사항

  • Node.js
  • Express.js
  • Sendgrid API 계정
  • HTML 이메일 생성기 또는 직접 작성한 HTML 이메일

사용된 노드 모듈

  • 카우치베이스 Node.js SDK/N1QL(카우치베이스에 액세스)
  • body-parser(JSON 문자열을 JSON 객체로 변환)
  • uuid(인증 문서 ID 생성용)
  • 노드 메일러(이메일 확인 API에서 이메일 보내기)
  • 노드 메일러 - 센드그리드 전송(센드그리드를 통해 노드 메일러 이메일 보내기)

 

먼저 노드 모듈을 가져오려면 다음을 수행합니다:

그러면

Node에 익숙하지 않은 경우 npm은 간단히 모듈을 설치해 줍니다. 모듈은 '-save' 엔딩을 사용하면 이러한 모듈이 package.json 파일로 이동합니다. Touchbase 깃허브 리포지토리의 package.json 파일을 만듭니다.

먼저 센드그리드 계정을 생성하여 무료 웹 API. 이미 가지고 있다고 가정하고 계속 진행하겠습니다. 그런 다음 실제로 Sendgrid와 노드 메일러를 사용하여 이메일을 보내려면 Sendgrid API의 간단한 설정을 수행해야 합니다. 이 두 서비스를 함께 사용하는 방법에 대한 설명은 다음에 나와 있습니다. Sendgrid의 블로그 코드 스니펫을 사용하여 더 나아갈 것입니다. 저는 이것을 models/sessionmodel.js 파일에 'Session.makeVerification'. 이 함수가 호출되는 엔드포인트는 다음에서 찾을 수 있습니다. routes/routes.js as '/api/registerUser'에 대해 자세히 설명했습니다. 지난 블로그에서. 이 함수는 해당 경로의 마지막에 호출되어 사용자가 계정에 로그인하기 전에 클릭해야 하는 인증 이메일을 생성하여 서비스 남용을 방지합니다.

에서 models/usermodel.js 파일, 즉 'User.create' 함수의 하위 객체 '로그인'에는 'emailVerified'라는 부울 필드가 있습니다. 이 속성의 중요성은 확인 경로가 사용자의 이 속성을 true로 변경하여 이메일이 확인된 경우 로그인을 허용한다는 것입니다.

'Session.makeVerification' 함수

그런 다음 Email.create 모델입니다. 모델을 살펴보면 models/emailmodel.js 파일에 들어가면 이 작업을 수행하는 예제를 볼 수 있습니다. 이것은 단순히 HTML을 자바스크립트로 변환하는 문자열 변환기 를 호출하면 Sendgrid API에서 HTML 이메일로 변환되는 자바스크립트 문자열을 생성합니다.

우리의 'Session.makeVerification' 함수를 사용하여 노드 메일러 및 Sendgrid API에 대한 몇 가지 기본 설정을 수행합니다. 옵션과 Sendgrid 계정을 만들 때 설정한 API 사용자 이름 및 비밀번호를 입력합니다. 노드 메일러의 개인 이메일 계정이 아닌 Sendgrid API를 사용하기로 선택한 이유는 Sendgrid가 모든 이메일을 추적할 수 있고 제시간에 배달되도록 보장하기 때문입니다. 또한 이메일이 스팸함, 프로모션 필터 등에 포함되지 않도록 보장합니다. 이렇게 하면 이메일이 안전하게 전송되며 원하는 이메일 주소로 별칭을 지정할 수도 있습니다. 이 경우에는 공식 이메일이 아닌 'touchbase-noreply@couchbase.com'을 사용하지만, 이메일이 Touchbase에서 사용자에게 전송되었음을 명확하게 보여줄 수 있습니다. 이렇게 하면 다음과 같이 할 수 있습니다. Sendgrid API 사용자 없이 도 마찬가지입니다.

의 다음 부분 'Session.makeVerification' 로 이동합니다. 'Email.create' 의 함수를 호출하여 사용자에게 보낼 이메일의 HTML 템플릿을 작성합니다. models/emailmodel.js. 자세히 살펴보면 이 함수는 HTML 이메일 파일을 가져와 자바스크립트 문자열로 변환합니다. HTML 이메일을 생성하는 것은 HTML 파일과 약간 다릅니다. 이 훌륭한 메일침프 기사. 그런 다음 HTML에서 자바스크립트 문자열 생성기를 사용하여 다음과 같은 문자열을 반환했습니다. 'Email.create' 함수를 호출하여 노드 메일러 이메일의 HTML로 사용합니다. 요청 객체를 'Session.makeVerification' 함수를 이 함수에 추가하여 페이지에 액세스하는 데 사용된 URL을 생성할 수 있도록 했습니다. 이렇게 하면 누군가가 사이트의 도메인이나 테스트 중인 IP 주소를 변경하더라도 인증 이메일에 적합한 URL을 일관되게 생성할 수 있습니다. 이 URL이 변경되는 위치는 HTML 페이지의 '확인' 버튼의 'href'로, 링크를 클릭하면 다음 주소의 인증 ID URL로 전송되도록 합니다. '/api/verify/:verificationID'. 이 API는 routes/routes.js 파일을 만듭니다.

'/api/verify/:verificationID' API

이 기능을 통해 최종적으로 이메일 인증이 전송되므로 사용자는 계정에 액세스하기 전에 이메일을 인증해야 합니다. 사용자의 이메일 인증 버튼을 누르면 이메일 인증 버튼이 'api/verify/:verificationID' 페이지에서 API가 인증 ID를 다음과 같이 가져옵니다. 'req.params.verificationID'. 그런 다음 이를 '세션.확인' in models/sessionmodel.js. 이 함수는 이 verificationID를 가져와서 존재 여부를 확인합니다. 그런 다음 연결된 사용자의 사용자 문서의 상태를 변경하고 'login.emailVerified' 속성을 true로 설정하여 사용자가 로그인할 수 있도록 합니다. 마지막으로 인증 문서를 삭제하여 등록 프로세스를 완료하고 사용자가 로그인할 수 있도록 애플리케이션을 설정합니다.

'Session.verify' 함수

요약하자면, Touchbase가 이메일 인증 프로세스를 위한 문서를 생성하고 사용자에게 HTML 메일을 생성한 다음 인증이 완료되면 사용자 프로필을 업데이트하는 방법에 대해 설명했습니다. 질문이나 피드백이 있으면 아래에 의견을 남겨 주세요.

작성자

게시자 프라나브 마유람

프라나브 마유람은 N1QL 쿼리 언어 인턴, Couchbase입니다. Couchbase Server, Node.js, Express 및 Angular.js를 사용하여 소셜 네트워크 플랫폼인 Touchbase를 구축했습니다.

댓글 남기기