Cognito允许重复的电子邮件别名?

0

【以下的问题经过翻译处理】 给定一个用户池,可以通过电子邮件或电话号码进行登录,我使用Amplify的Auth.signUp方法创建了一个带有电子邮件和电话号码属性的用户(请参见下文)。

Auth.signUp({
        username: "<电话号码>",
        password,
        attributes: {
            email: "有效的电子邮件地址",
            phone_number: "<电话号码>",
            name
        }
    });

这段代码允许创建用户并向电话号码发送OTP。确认OTP后,Cognito拥有该用户,并将电话号码标记为已验证,但将电子邮件标记为未验证。之后,我能够使用AWS SDK AdminUpdateUserAttributesCommand 更改用户的电子邮件属性为现有用户的电子邮件别名。这应该引发AliasExistsException异常。但是,它将OTP验证发送到我提供的电子邮件Id(属于已经存在的用户)。Cognito还允许我使用Amplify的verifyUserAttributeSubmit方法确认OTP。因此,Cognito用户池最终拥有了具有相同电子邮件地址的2个不同用户。这个用户池可以用电子邮件登录,这意味着电子邮件必须是唯一的。

支持验证电子邮件/电话号码属性的最近功能似乎存在错误?在使用Cognito时,我还遇到了另一个问题

Enter image description here

1 Antwort
0

【以下的回答经过翻译处理】 按照https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-settings-attributes.html文章解决了问题。我的要求是,用户应该能够使用电子邮件或电话号码进行登录。一旦他们创建了账户,他们应该能够使用这些选项中的任何一个来登录同一个账户。还可以将来更改相同账户的电子邮件/电话号码。

  • 创建了带有多个(别名)登录选项的用户池。 Enter image description here
  • 在UI侧,在signUp期间,请确保在amplify调用中传递forceAliasCreation:true。
const res = await Auth.confirmSignUp(username, code, {
                forceAliasCreation: true
            });

通过以上配置,我能够使用电子邮件/电话号码进行登录。此外,如果另一个用户试图使用相同的电子邮件,Cognito确保仅将用户帐户的电子邮件状态标记为已验证。因此,任何时候只有一个经过验证的电子邮件可以进行登录。

profile picture
EXPERTE
beantwortet vor 5 Monaten

Du bist nicht angemeldet. Anmelden um eine Antwort zu veröffentlichen.

Eine gute Antwort beantwortet die Frage klar, gibt konstruktives Feedback und fördert die berufliche Weiterentwicklung des Fragenstellers.

Richtlinien für die Beantwortung von Fragen