无需验证电子邮件的 Cognito

Cognito without Verifying Email

我正在使用 Cognito 进行用户注册和身份验证。我希望用户能够注册和登录而无需验证他们的电子邮件地址(为此会有一个单独的过程)

我已经将我的 Cognito 用户池设置为不需要电子邮件或短信验证,但是当我进行以下调用时,由于帐户未被验证,我仍然返回失败。

cognitoUser.authenticateUser(authenticationDetails, {
            newPasswordRequired: function (userAttributes, requiredAttributes) {
                callback.cognitoCallback(`User needs to set password.`, null);
            }

我收到的错误信息是'User is not confirmed.'

因此,即使我已关闭验证,但如果我未经过验证,API 似乎会被拒绝。除了自动验证之外真的没有办法解决这个问题吗?我不希望这样,在用户进程的某个时刻我确实想验证电子邮件地址,我只是不想让它成为注册的障碍。

默认情况下,用户不会在 Cognito 用户池中得到确认,因此如果您不希望他们通过电子邮件或 phone 验证过程,则需要手动执行此操作。

为此,您可以设置 Pre sign-up 触发器以使用以下代码调用 Lambda 函数:

def lambda_handler(event, context):
    event['response'] = {
        'autoConfirmUser': True,
        'autoVerifyEmail': False,
        'autoVerifyPhone': False
    }

    return event

触发器基本上允许您对每个身份验证请求进行额外处理。请注意,您必须将事件对象作为 Lambda 函数的输出传回。