AWS Cognito:如何防止使用同一电子邮件地址进行多次注册?
AWS Cognito: How can I prevent multiple registrations with the same email address?
在我的用户池中,我目前看到两个登录流程选项:
- 使用用户名和电子邮件地址
- 使用电子邮件地址或phone号码
选项1:用户名是唯一的。如果您尝试使用此用户名再次注册,您将收到一条错误消息。但是:电子邮件地址不是唯一的。您可以尝试使用此电子邮件地址重新注册。然后将在用户池中创建用户,但您将无法再次确认此电子邮件地址。
选项 2:电子邮件地址和/或 phone 号码是唯一的。但是用户名不能再登录了
我想要什么?
我需要两种选择的组合。我希望我的用户使用用户名和电子邮件地址登录(选项 1 就是这种情况),但我不想让他们使用相同的电子邮件地址创建多个帐户(他们需要与选项 2 一样的唯一电子邮件).
有没有一种简单的方法可以做到这一点?我在 Cognito 控制台中找不到任何东西,感觉我需要像自定义 Lambda 触发器之类的东西....感谢任何提示!
您已经朝着正确的方向前进。您需要预注册 lambda 来为您检查电子邮件的唯一性。应该相对简单这里是关于如何设置这样的 lambda 的文档的link:
https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-lambda-pre-sign-up.html
您的 Lambda 需要能够对用户池执行操作,以确定具有特定电子邮件的用户是否已经存在。
搜索此类用户的最简单方法是使用带有过滤器的 ListUsers API (https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ListUsers.html) select 只有具有相关电子邮件地址的用户。
在我的用户池中,我目前看到两个登录流程选项:
- 使用用户名和电子邮件地址
- 使用电子邮件地址或phone号码
选项1:用户名是唯一的。如果您尝试使用此用户名再次注册,您将收到一条错误消息。但是:电子邮件地址不是唯一的。您可以尝试使用此电子邮件地址重新注册。然后将在用户池中创建用户,但您将无法再次确认此电子邮件地址。
选项 2:电子邮件地址和/或 phone 号码是唯一的。但是用户名不能再登录了
我想要什么?
我需要两种选择的组合。我希望我的用户使用用户名和电子邮件地址登录(选项 1 就是这种情况),但我不想让他们使用相同的电子邮件地址创建多个帐户(他们需要与选项 2 一样的唯一电子邮件). 有没有一种简单的方法可以做到这一点?我在 Cognito 控制台中找不到任何东西,感觉我需要像自定义 Lambda 触发器之类的东西....感谢任何提示!
您已经朝着正确的方向前进。您需要预注册 lambda 来为您检查电子邮件的唯一性。应该相对简单这里是关于如何设置这样的 lambda 的文档的link:
https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-lambda-pre-sign-up.html
您的 Lambda 需要能够对用户池执行操作,以确定具有特定电子邮件的用户是否已经存在。
搜索此类用户的最简单方法是使用带有过滤器的 ListUsers API (https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ListUsers.html) select 只有具有相关电子邮件地址的用户。