Cognito用户池不允许具有重复电子邮件地址的用户。但是,在某些情况下,Cognito可能会创建重复的电子邮件记录。这可能是因为用户是以不同的方式注册的(例如使用不同的社交媒体帐户)。要解决此问题,您可以使用以下代码以编程方式检查用户是否已存在于用户池中:
import boto3
from botocore.exceptions import ClientError
client = boto3.client('cognito-idp')
def user_exists(email):
try:
response = client.admin_get_user(
UserPoolId='',
Username=email
)
return True
except ClientError as e:
if e.response['Error']['Code'] == 'UserNotFoundException':
return False
else:
raise e
该函数使用admin_get_user
操作检查用户是否存在于用户池中。如果用户不存在,将引发UserNotFoundException
异常。在注册新用户之前,您可以调用user_exists
函数来检查用户是否已存在,并仅允许唯一的电子邮件地址。