“预签名时自动验证电子邮件”触发器不会验证新用户的电子邮件

2024-10-03 09:16:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用admin\u create\u用户触发预签名lambda:

        self.cognito.admin_create_user(
            UserPoolId=self.user_pool_id,
            Username=user.username,
            UserAttributes=[
                {
                    'Name': 'name',
                    'Value': user.username
                },
                {
                    'Name': 'email',
                    'Value': user.username
                },
            ],
            MessageAction='SUPPRESS')

这将使用此处理程序触发lambda:

def pre_signup(event, context):

    event['response']['autoConfirmUser'] = True
    event['response']['autoVerifyEmail'] = True
    
    print(f"EVENT: {event}")
    return event

然后在Cloudwatch上,事件是(感知数据已被掩盖):

EVENT: {'version': '1', 'region': 'us-east-X', 'userPoolId': 'us-east-X_XXXXXXXX', 'userName': 'XXXXXXXX-bd2d-4fec-b421-d2c4b89f3274', 'callerContext': {'awsSdkVersion': 'aws-sdk-unknown-unknown', 'clientId': 'CLIENT_ID_NOT_APPLICABLE'}, 'triggerSource': 'PreSignUp_AdminCreateUser', 'request': {'userAttributes': {'name': 'XXXXXXXXXX@XXXXXXXX.com', 'email': 'XXXXXXXXXX@XXXXXXXX.com'}, 'validationData': None}, 'response': {'autoConfirmUser': True, 'autoVerifyEmail': True, 'autoVerifyPhone': False}}

如您所见,autoVerifyEmail选项设置为True,just as the docs state。问题是,这东西坏了,就是坏了

即使手动调用admin_update_user_attributes也不起作用

    self.cognito.admin_update_user_attributes(
            UserPoolId=self.user_pool_id,
            Username=user.username,
            UserAttributes=[
                {
                    'Name': 'email_verified',
                    'Value': True
                },
            ]
        )

Even in the AWS forums there are no answers。那么,这东西是完全坏了还是我做错了什么?我甚至尝试将字符串设置为“true”,只是因为文档中有引号(“布尔”)。我不知道该怎么办了,用户不会被创建为具有已验证的电子邮件属性


Tags: lambda用户nameselfeventtrueadminvalue
1条回答
网友
1楼 · 发布于 2024-10-03 09:16:38

对于那些将来会遇到这种情况的人,我已经用admin_update_user_attributes解决了它,值必须是字符串

admin_update_user_attributes_response = self.cognito.admin_update_user_attributes(
        UserPoolId=self.user_pool_id,
        Username=user.username,
        UserAttributes=[
            {
                'Name': 'email_verified',
                'Value': 'true'
            },
        ]
    )

事实证明,这是我的一个错误,我没有测试正确的端点,所以我无法在cloudwatch上看到这方面的变化。很难测试与AWS Cognito相关的任何内容,它不是一个非常用户友好的服务

相关问题 更多 >