AWS

[AWS] Cognito - 회원가입 (with Node.js)

itaeiou 2021. 10. 18. 17:43
반응형

이제 본격적으로 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

 

[AWS] Mysql Lambda 생성하기

Database에 user status를 업데이트하는 Lambda를 만들어보겠습니다. 함수 생성 1. AWS Console Lambda에서 [함수 생성]을 클릭합니다. 2. 함수 이름을 작성하고 [함수 생성]을 클릭합니다. Mysql 라이브러리..

jane-aeiou.tistory.com

 

2. 트리거에서 생성한 Lambda를 선택하고 변경사항 저장을 클릭합니다.

인증이 완료된 후 update를 하기 때문에 게시 확인에 Lambda를 추가합니다.

 

3. 이메일 인증 후 Database에서 값이 변경됐는지 확인합니다.

반응형