新用户使用相同的电子邮件和电话号码注册的用户成功在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'
},
],
)
答案 0 :(得分: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
答案 1 :(得分:0)
我们有相同的情况。 我还需要防止用户使用相同的电子邮件和/或电话号码注册。
在我们的案例中,我们有User Data Service
服务,该服务存储与用户相关的数据,包括电子邮件和电话号码(这是Cognito的重复数据)。
由于我们已经有了Service
,因此我更喜欢使用此{而不是获取Cognito用户列表并在其中循环浏览(想象一下,如果您有成千上万的用户,那将花费一些时间来获取和时间循环)
我所做的是向User Data Service
请求一种方法,以在电子邮件或电话号码已经存在的情况下有效。
我创建了一个lambda进行验证,并将lambda设置为Pre-sign up trigger
。
Pre-sign up trigger
,因此如果电子邮件已经存在,它将阻止他们注册。