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

profile picture
专家
已提问 5 个月前21 查看次数
1 回答
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
专家
已回答 5 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则