AWS Cognito를 사용하여 사용자 이름, 이메일 및 전화로 인증

AWS Amplify는 설명된 대로 Amplify CLI를 통해 설치할 수 있는 인증 서비스와 함께 제공됩니다here.

그러나 CLI가 제공하는 옵션의 문제점은 다음 4개 중 하나만 선택할 수 있다는 것입니다.
  • 사용자 이름
  • 이메일
  • 전화
  • 이메일 또는 전화(첫 번째 로그인 옵션으로 설정됨 -> 이메일 또는 전화)


  • 이제 앱 개발자로서 우리는 사용자에게 다음과 같은 옵션을 제공하고자 합니다. 이메일이나 전화를 통해 로그인할 수 있는 기능(사용자 이름은 더 이상 의미가 없습니다).

    Amplify를 사용하지 않고 Cognito를 직접 설정한 경우 다음 옵션을 사용하여 이 설정을 수행할 수 있습니다.


    Amplify는 기존 Cognito 사용자 풀을 가져올 수 있는 옵션을 제공하지만 수명 주기, 설정 및 유틸리티를 사용할 수 없습니다. 그래서 당신은 일부를 얻기 위해 일부를 잃습니다.

    그러나 AWS가 우리에게 두 가지를 모두 제공할 수 있는 기능이 있습니다.

    이 기능은 override 옵션입니다. 이렇게 하면 Cognito 옵션의 세부 정보를 얻을 수 있는 override.ts 파일이 생성됩니다.

    따라서 사용자가 이메일과 전화로 로그인할 수 있도록 하는 요구 사항을 위해 이것을 override.ts에 추가해야 합니다. 파일은 다음과 같습니다.

    import { AmplifyAuthCognitoStackTemplate } from '@aws-amplify/cli-extensibility-helper';
    
    export function override(resources: AmplifyAuthCognitoStackTemplate) {
        resources.userPool.aliasAttributes = ['email', 'phone_number',];
    }
    


    이것이 추가되면 Amplify는 올바른 로그인 옵션이 있는 Cognito 사용자 풀을 구축합니다.


    따라서 가입은 다음과 같이 작동합니다.

    const response = await Auth.signUp({
          username: v4(),
          password: password,
          attributes: {
            email: email, //Pass this
            phone_number: phone,// or this
          },
        })
    


    하나는 다른 속성을 추가할 수 있습니다. 다음과 같은 전화:

    async function addPhone(phone: string) {
      try {
        const user = await Auth.currentAuthenticatedUser()
        const responseUpdate = await Auth.updateUserAttributes(user, {
          phone_number: phone,
        })
        console.log({responseUpdate})
      } catch (error) {
        console.error('error adding phone:', error)
      }
    }
    


    다음과 같이 전화를 사용하여 로그인하십시오.

    async function loginPhone(phone: string) {
      try {
        const authUser = await Auth.signIn(phone, password)
        console.log({authUser})
      } catch (error) {
        console.error('error logging in:', error)
      }
    }
    


    저장소here를 참조하십시오.
    다음 기능은 Cognito 사용자 풀 설정을 테스트하는 데 사용할 수 있습니다.

    좋은 웹페이지 즐겨찾기