【问题标题】:AWS Cognito Workflow: Using email alias for primary usernameAWS Cognito 工作流程:使用电子邮件别名作为主用户名
【发布时间】:2017-07-19 20:14:49
【问题描述】:

所以我试图了解 AWS Cognito,但我遇到了一些问题。

所以,现在我可以注册一个帐户,验证并登录。很简单。边缘案例就是我的墙所在的地方。

这是我目前掌握的信息:

这是我的极端情况。

如果用户注册,但立即验证:

  • 他们被叫走了
  • 可能应用崩溃了
  • 他们失去了连接
  • 他们的电池没电了
  • 他们强行退出
  • 应用程序被意外删除。

在他们看来,他们已经注册了,只是没有验证他们的帐户。在这一点上,它实际上无法验证他们认为他们注册的帐户。我想这可以通过消息传递来解决:

“警告您在验证您的电子邮件地址之前不会创建您的帐户。”或类似的规定。总之……

  • 他们无法尝试登录,因为他们不知道随机分配为他们的username 的 UUID。
  • 即使不是这样,他们也提供了电子邮件地址作为用户名。从用户的 POV 来看,他们甚至不知道他们的 username 是什么,因为他们只输入了他们的电子邮件地址。
  • 他们希望的最好结果就是尝试重新注册。 (假设他们阅读了上面的验证警告)在这种情况下,现在 Cognito 可能已经放弃了未确认帐户堆积。

“堆积”可能是一个过于强烈的短语,这可能是一个非常边缘的案例。

现在有利的一面是,由于他们尚未“验证”他们的email,他们可以使用相同的email 地址再次注册,因为emailverified 之前不会受到唯一限制。如果有人试图验证一个已经验证过的地址,他们会得到一个AliasExistsException。这实际上提出了一个有趣的观点,我也刚刚测试过。

我可以使用电子邮件地址注册,然后验证该电子邮件地址,以便帐户得到确认。然后我可以右转并使用 same 电子邮件地址进行注册,并且在尝试使用重复的电子邮件地址验证该帐户之前,我不会收到官方的 AWS 错误。没有任何方法可以更早地显示此错误吗?我猜期望是开发人员在 Pre-Signup Trigger 中编写验证服务:

当用户提交他们的信息进行注册时会调用此触发器,允许您执行自定义验证以接受或拒绝注册请求。

总结并重申问题:

这似乎是必需,实际上,当使用带有 Cognito 的电子邮件地址时,需要预注册 Lambda 以确保自 AWS 例外以来不存在带有电子邮件的帐户在进行验证尝试之前不会处理。

我的假设是否正确?通过必需,我认为尽快让用户知道电子邮件地址不可用是非常合理的。例如:

John Doe : jdoe@gmail.com
Jane Doe : jdoe@gmail.com

【问题讨论】:

  • 确实如此。您需要在预注册触发器中编写一些脚本来检查电子邮件。另外,您可以尝试在触发器中使用:event.response.autoVerifyEmail = true;,但是这种方法不会发送邮件来检查邮件的真实性
  • 我也遇到了这些问题。你找到方法了吗?

标签: amazon-web-services aws-cognito


【解决方案1】:

你是对的。 另一种解决方案是创建一个 lambda(不是由 preSignUp 触发),并在用户完成输入电子邮件字段时调用。甚至在发送注册事件之前得到响应“此电子邮件已被使用”或“此电子邮件可用”。

参考您问题的第一部分。如果用户没有立即验证他们的电子邮件。您可能是指通过代码确认。我更喜欢通过发送到电子邮件的链接进行确认,这样可以避免这个问题。

【讨论】:

    猜你喜欢
    • 2021-03-26
    • 2022-10-07
    • 1970-01-01
    • 2021-11-07
    • 1970-01-01
    • 2021-05-13
    • 2015-04-27
    • 1970-01-01
    • 2018-06-28
    相关资源
    最近更新 更多