AWS Cognito工作流程:使用电子邮件别名用于主要用户名



所以我试图让我的头围绕AWS Cognito,但我撞到了一些墙。

因此,现在我可以注册一个帐户,并验证并登录。边缘是我的墙壁的位置。

这是我到目前为止的信息:

  • username的S无法更改一旦创建
  • 我正在使用UUID作为我的username
  • email被标记为别名,在Cognito术语中,我可以使用它来登录username
  • 如果选择email作为别名,根据文档,相同的值不能用作用户名(http://docs.aws.aws.aws.amazon.com/cognito/cognito/lateste-/developerguide/user-pool-settings-attributes.html#user-pool-settings-aliases):

    如果选择电子邮件作为别名,则用户名无法匹配有效的电子邮件格式。同样,如果选择电话号码作为别名,那么与该用户池的服务不接受匹配有效电话号码模式的用户名。

  • email地址可以用于登录帐户 everiedified (http://docs.aws.aws.aws.amazon.com/cognito)/latest/developerguide/user-pool-settings-attributes.html#user-pool-settings-aliases)

    电话号码和电子邮件地址仅在验证电话号码和电子邮件地址后才会成为用户的主动别名。因此,我们建议您选择使用电子邮件地址和电话号码的自动验证,如果您选择使用它们作为别名。

这是我的边缘案例。

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

  • 他们被称为
  • 也许应用程序崩溃
  • 他们失去了连接
  • 他们的电池死亡
  • 他们强迫退出
  • 应用程序意外删除。

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

"在验证电子邮件地址之前,不会创建您的帐户。"或类似的规定。无论如何...

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

"堆积"可能太强壮了,这可能是一个很漂亮的案例。

现在,由于尚未"验证"其email,因此它们可以再次使用相同的email地址注册,因为email直到verified才受到唯一的约束。如果有人试图验证已经验证的地址,则会获得AliasExistsException。这实际上提出了一个有趣的观点,我也刚刚测试过。

我可以注册电子邮件地址,然后验证该电子邮件地址,以便确认帐户。然后,我可以转身并使用相同电子邮件地址注册,并且在尝试使用重复的电子邮件地址验证该帐户之前,我不会遇到官方AWS错误。没有任何方法可以较早地浮出水面吗?我猜期望是在开发人员上写验证服务在预签名触发器中:

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

总结一下,并重申问题:

实际上,这似乎是,实际上,在使用Cognito使用电子邮件地址时,需要预先签名的lambda来确保不存在电子邮件帐户,因为AWS例外在进行验证尝试之前,不会处理。

我的假设在这里正确吗?必需在这里,我认为让用户知道没有尽快获得电子邮件地址是很合理的。例如:

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

您是正确的。另一个解决方案是创建一个lambda(不是由预先签名触发),并在用户完成电子邮件字段时打来电话。并在发送注册活动之前获得"已经使用此电子邮件"或"此电子邮件可用"或"此电子邮件可用"。

参考问题的第一部分。如果用户未立即验证其电子邮件。您可能是指通过代码确认。我更喜欢通过发送到电子邮件的链接确认来避免此问题。

知道这是一个旧问题,这是一个后代的解决方案...我正在使用用户名的生成的uuid,就像您一样,对用户未公开。

用户想以后确认代码(或者要求重新发送)时,他不知道用户名,但他确实知道他在...

的电子邮件地址

您可以使用带有email = "user@signupemail.com"的过滤器的Listusers使用Listusers搜索Cognito用户。

找到用户后,您可以通过response.Users[0].Username访问其用户名,并使用它确认帐户。

最新更新