簡體   English   中英

Cognito 使用 email 或電話號碼作為用戶名

[英]Cognito use either email or phone number as username

我有這個 SAM 模板:

AWSTemplateFormatVersion: "2010-09-09"
Transform: AWS::Serverless-2016-10-31
Description: >
  Passwordless SMS authentication backend using Amazon Cognito User Pools CUSTOM AUTH challenge flow w/ AWS Lambda triggers and Amazon SNS for sending SMS TOTP

Metadata:
  AWS::ServerlessRepo::Application:
    Name: passwordless-sms-email-auth 
    Description: >
      Passwordless SMS authentication backend using Amazon Cognito User Pools CUSTOM AUTH challenge flow w/ AWS Lambda triggers and Amazon SNS for sending SMS TOTP
    SpdxLicenseId: MIT
    LicenseUrl: LICENSE
    Labels: ['passwordless', 'authentication', 'cognito', 'auth', 'sms', 'iOS', 'mobile', 'pinpoint', 'serverless', 'amplify']
    SemanticVersion: 1.14.20

Globals:
  Function:
    Timeout: 3

Parameters:
  UserPoolName:
    Type: String
    Description: The name you want the User Pool to be created with
    Default: rafaelTest

Resources:
  UserPool:
    Type: "AWS::Cognito::UserPool"
    Properties:
      UserPoolName: !Ref UserPoolName
      Schema:
        - Name: name
          AttributeDataType: String
          Mutable: true
          Required: true
        - Name: phone_number
          AttributeDataType: String
          Mutable: true
          Required: false
        - Name: email
          AttributeDataType: String
          Mutable: true
          Required: false
      Policies:
        PasswordPolicy:
          MinimumLength: 6
          RequireLowercase: false
          RequireNumbers: false
          RequireSymbols: false
          RequireUppercase: false
      UsernameAttributes:
        - phone_number
        - email
      MfaConfiguration: "OFF"
      LambdaConfig:
        CreateAuthChallenge: !GetAtt CreateAuthChallenge.Arn
        DefineAuthChallenge: !GetAtt DefineAuthChallenge.Arn
        PreSignUp: !GetAtt PreSignUp.Arn
        VerifyAuthChallengeResponse: !GetAtt VerifyAuthChallengeResponse.Arn

  UserPoolClient:
    Type: "AWS::Cognito::UserPoolClient"
    Properties:
      ClientName: sms-auth-client
      GenerateSecret: false
      UserPoolId: !Ref UserPool
      ExplicitAuthFlows:
        - CUSTOM_AUTH_FLOW_ONLY

Outputs:
  UserPoolId:
    Description: ID of the User Pool
    Value: !Ref UserPool
  UserPoolClientId:
    Description: ID of the User Pool Client
    Value: !Ref UserPoolClient

在創建用戶池時,我希望用戶能夠使用他們的 email 或電話作為他們的用戶名。

這樣就完成了,我總是需要同時發送 email 和電話號碼。

有誰知道我如何解決這個問題?

我希望用戶能夠通過輸入以下信息之一進行登錄:

  • email + 姓名
  • 電話號碼+姓名

有人幫幫我嗎?

用戶可以使用此 SAM 模板使用他們的 email 或電話號碼登錄,並在注冊時使用隨機 uuid 作為用戶名。

UserPool:
    Type: "AWS::Cognito::UserPool"
    Properties:
      UserPoolName: !Ref UserPoolName
      Schema:
        - Name: phone_number
          AttributeDataType: String
          Mutable: true
        - Name: email
          AttributeDataType: String
          Mutable: true
      Policies:
        PasswordPolicy:
          MinimumLength: 6
          RequireLowercase: false
          RequireNumbers: false
          RequireSymbols: false
          RequireUppercase: false
      AliasAttributes:
        - email
        - phone_number
      MfaConfiguration: "OFF"

但是現在我需要知道別名用戶在登錄時使用,有人知道怎么做嗎?

我正在使用 cognito 進行無密碼流程,create-auth-lambda 觸發器上的事件始終相同。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM