没有验证电子邮件的Cognito

时间:2017-09-07 19:51:03

标签: amazon-web-services amazon-cognito aws-cognito

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

我已将我的Cognito用户池设置为不需要电子邮件或短信验证,但当我进行以下呼叫时,由于帐户未经过验证,我仍然会收到失败。

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

我收到的错误消息是'用户未确认。'

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

1 个答案:

答案 0 :(得分:15)

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

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

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

    return event

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