【问题标题】:How to confirm user in Cognito User Pools without verifying email or phone?如何在不验证电子邮件或电话的情况下确认 Cognito 用户池中的用户?
【发布时间】:2018-05-01 21:32:23
【问题描述】:

我正在使用Amazon Cognito Identity SDK for JavaScript(已弃用)。

我在未验证电子邮件和电话号码的情况下创建了新池。

默认情况下,Cognito 用户池中不会确认用户,因此我需要手动执行此操作。

如何在不验证电子邮件或电话的情况下确认 Cognito 用户池中的用户?

【问题讨论】:

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


【解决方案1】:

我希望这对其他人有帮助。

为此,您可以添加此 Lambda 函数:

exports.handler = (event, context, callback) => {
    event.response.autoConfirmUser = true;
    event.response.autoVerifyEmail = true;  // this is NOT needed if e-mail is not in attributeList
    event.response.autoVerifyPhone = true;  // this is NOT needed if phone # is not in attributeList
    context.done(null, event);
};

然后导航到 AWS Cognito 的常规设置 >> 触发器并将此 Lambda 函数添​​加到“注册前” - 单击下拉列表并选择具有上述代码的 Lambda 函数。

如果您只使用 'preferred_username'(如果没有使用电子邮件或电话号码),请将 event.response.autoConfirmUser 设置为 true。

【讨论】:

  • 我添加了这个 Lambda 并且我的用户被自动确认。这是否允许用户将他们的 IAM 凭证用于 S3 等?然后我可以提示用户“验证您的电子邮件地址”并限制对功能的访问,直到电子邮件得到验证?
  • 如果您使用 sdk 创建用户,这将不起作用。它仅在用户通过自定义 UI 注册时才有效。你有解决办法吗?
  • 但是如何添加预注册 lambda 函数?
【解决方案2】:

实际上,AWS 最近还在 pre-signup lambda 中添加了验证电子邮件和验证电话号码的功能。您基本上需要在 lambda 中设置 autoVerifyEmailautoVerifyPhone ,它们将得到验证。 更多信息在official documentation

"response": {
    "autoConfirmUser": boolean
    "autoVerifyEmail": boolean
    "autoVerifyPhone": boolean
}

【讨论】:

    【解决方案3】:

    我认为接受的答案是有问题的。 OP 的问题是如何在不验证他们的电子邮件的情况下确认用户。但该解决方案验证用户的电子邮件。

    如果您想通过未经验证的电子邮件(或电话)确认用户,可以使用AdminConfirmSignUpCommand。根据官方文档,这是在不让他们这样做的情况下确认用户的预期方式:

    ConfirmSignUpCommand 不同,AdminConfirmSignUpCommand 不需要代码。您可以在您的 API 中注册后实现此命令,或作为自定义消息触发器(在发送电子邮件时有效地确认用户)。

    现在,用户可以登录了,但是邮件还是要确认的。

    【讨论】:

      猜你喜欢
      • 2020-09-13
      • 2019-11-23
      • 2020-06-15
      • 2011-12-29
      • 2019-11-24
      • 2019-05-21
      • 2013-08-17
      • 2017-06-17
      • 2011-01-22
      相关资源
      最近更新 更多