如何在Cognito用户池中注册时检查用户是否已存在相同的电子邮件或电话号码

问题描述 投票:0回答:2

当新用户注册相同的电子邮件和电话号码用户在Cognito用户池中成功注册。那么如何在Cognito用户池中注册时检查用户是否已经存在相同的电子邮件或电话号码

这是我在Cognito用户池中进行用户注册的代码

result = client.sign_up(                                                
            ClientId= clientId,                                                 
            Username= data['username'],                                         
            Password= data['password'],                                         
            UserAttributes=[                                                    
                {                                                               
                    'Name': 'phone_number',                                     
                    'Value': data['phone_number'],                              
                },                                                              
                {                                                               
                    'Name': 'email',                                            
                    'Value': data['email'],                                     
                },                                                              
                {                                                              
                    'Name': 'custom:usertype',                                 
                    'Value': data['userType']                                  
                },                                                             
            ],                                                                  
            ValidationData=[                                                   
                {                                                              
                    'Name': 'custom:usertype',                                 
                    'Value': 'required'                                        
                },                                                             
            ],
)
amazon-web-services amazon-cognito aws-serverless
2个回答
0
投票

您可以使用ListUsers API调用(https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ListUsers.html)按用户的属性过滤用户,如果返回结果,则可以处理用户验证。

您还可以在“预注册Lambda触发器”中包含此逻辑,以集中服务器端验证逻辑:https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-lambda-pre-sign-up.html


0
投票

我们有相同的情况。我还需要阻止用户使用相同的电子邮件和/或电话号码进行注册。

在我们的例子中,我们有一个User Data Service服务,用于存储用户相关数据,包括电子邮件和电话号码(这是与Cognito的重复数据)。

由于我们已经有了这个Service,我更喜欢使用这个而不是获取Cognito用户列表并循环遍历它们(想象一下,如果你有数千或更多的用户,这将花费一些时间来获取和循环时间)

我所做的是要求我们的User Data Service方法有效,如果已经存在电子邮件或电话号码。

我创建了一个用于验证的lambda,并将lambda设置为Pre-sign up trigger

对于通过Google或Facebook注册的用户,也会触发Pre-sign up trigger,因此如果他们的电子邮件已经存在,它将阻止他们注册。

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.