반응형
이제 본격적으로 Node.js 서버에서 회원가입 코드를 작성해 보겠습니다.
1. aws-sdk 설치
npm install aws-sdk
위 명령어로 AWS SDK를 설치합니다.
2. 자격증명 설정
const AWS = require('aws-sdk');
AWS.config.region = 'ap-northeast-2';
AWS.config.credentials = new AWS.CognitoIdentityCredentials({
IdentityPoolId: 'ap-northeast-2:xxxxxxxx-xx-xxxxxx'
});
IdentityPoolId는 아래 화면에서 확인할 수 있습니다. (설정은 전편을 참고해주세요.)
3. 회원가입 코드 작성
exports.signUp = (email, password) => {
const AWSCognito = new AWS.CognitoIdentityServiceProvider();
let params = {
ClientId: 'xxxxxxxxxxxxxxxxxxxx',
Username: email, //Cognito에 저장될 이름
Password: password,
UserAttributes: [
{
Name: 'email',
Value: email //확인 메일을 받을 이메일주소
}
]
};
// AWS SDK의 signUP함수를 이용합니다.
AWSCognito.signUp(params, (err, data) => {
if (err) {
console.log(err, err.stack);
return 500;
} else {
console.log(data);
return 200;
}
});
}
ClientId는 아래 화면에서 확인할 수 있습니다. (설정은 전편을 참고해주세요.)
4. 기존 회원가입 코드에 적용
router.post('/register', async (req, res) => {
let { user_id, email, password, korean_name, phone } = req.body;
let params = [user_id, email, password, korean_name, phone ];
const connection = await pool.getConnection(async conn => conn);
try {
let [results] = await connection.query(users_sql.insert, params);
await awsConfig.signUp(email, password); // awsconfig에 작성한 signUp함수 호출
res.status(200).json(results).end();
} catch (err) {
console.log(err);
res.status(500).json(err).end();
} finally {
connection.release();
}
});
실행
프로그램에서 회원가입을 진행하면 아래와 같이 이메일이 발송됩니다.
[이메일 확인]을 클릭하면 확인되었다는 문구가 나타나며, 인증이 완료됩니다.
회원가입 시 첫번째와 같이 UNCONFIRMED / 이메일 확인됨 false 이며,
메일 인증 완료 시 CONFIRMED / 이메일 확인됨 true 로 변경됩니다.
선택) 인증 시 Lambda 실행하기
이메일 인증이 완료되면 Database에 user status를 업데이트하는 Lambda를 추가해보겠습니다.
1. user status를 update하는 Lambda를 추가합니다.
아래 링크를 참고하세요.
https://jane-aeiou.tistory.com/51
2. 트리거에서 생성한 Lambda를 선택하고 변경사항 저장을 클릭합니다.
인증이 완료된 후 update를 하기 때문에 게시 확인에 Lambda를 추가합니다.
3. 이메일 인증 후 Database에서 값이 변경됐는지 확인합니다.
반응형
'AWS' 카테고리의 다른 글
[AWS] DynamoDB 와 DocumentDB 의 차이점 (0) | 2021.11.02 |
---|---|
[AWS] Mysql Lambda 생성하기 (0) | 2021.10.18 |
[AWS] Cognito - 사용자 풀 생성하기 (0) | 2021.10.18 |
[AWS] Route53 도메인 구입하기 (0) | 2021.10.12 |
[AWS] 정적 웹 사이트 만들기 (3) - Route53 연결 (0) | 2021.09.09 |