amazon-web-services - AWS Cognito工作流程:使用电子邮件别名作为主要用户名

标签 amazon-web-services aws-cognito

因此,我想尽我所能地了解AWS Cognito,但遇到了一些困难。

因此,现在我可以注册一个帐户,然后验证并登录。足够简单。边缘盒是我的墙壁所在的位置。

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

  • 创建后就无法更改
  • 我正在使用UUID作为username
  • username被标记为别名,用Cognito的术语来说,除了email之外,我还可以使用它来登录。
  • 如果将username选择为别名,则doct不能将相同的值用作用户名(http://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-settings-attributes.html#user-pool-settings-aliases):

    If email is selected as an alias, a username cannot match a valid email format. Similarly, if phone number is selected as an alias, a username that matches a valid phone number pattern will not be accepted by the service for that user pool.

  • 一旦帐户经过验证,就可以使用地址进行登录。(http://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-settings-attributes.html#user-pool-settings-aliases)

    Phone numbers and email addresses only become active aliases for a user after the phone numbers and email addresses have been verified. We therefore recommend that you choose automatic verification of email addresses and phone numbers if you choose to use them as aliases.


  • 我的优势在这里。

    如果用户注册了,但不是会立即验证:
  • 他们被叫走了
  • 也许应用程序崩溃了
  • 他们失去了联系
  • 他们的电池没电了
  • 他们强行退出
  • 应用程序被意外删除。

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

    “在您验证电子邮件地址之前,不会创建警告您的帐户。”或类似的规定。无论如何...
  • 他们无法尝试登录,因为他们不知道被随机分配为email的UUID。
  • 即使不是这样,他们还是提供了电子邮件地址作为用户名。从用户的POV看,他们甚至不知道email可能是什么,因为他们只输入了电子邮件地址。
  • 他们所希望的最好的办法是再次尝试注册。 (假设他们阅读了上面的验证警告)在这种情况下,现在Cognito可能会放弃堆积的未经确认的帐户。

  • “堆积”一词可能太过强烈,这可能是一个非常偶然的情况。

    现在好的一面是,由于他们尚未“验证”自己的username,因此可以使用相同的username地址再次注册,因为email直到email才受到唯一约束。如果有人尝试验证已经验证过的地址,他们会收到email。这实际上提出了一个有趣的观点,我也对此进行了测试。

    我可以注册一个电子邮件地址,然后验证该电子邮件地址,以便确认该帐户。然后,我可以右转并使用相同的电子邮件地址进行注册,直到尝试使用重复的电子邮件地址验证该帐户后,我才收到正式的AWS错误。没有任何办法可以更早地发现此错误?我想期望是在开发人员中在预注册触发器中编写验证服务:

    This trigger is invoked when a user submits their information to sign up, allowing you to perform custom validation to accept or deny the sign up request.



    总结一下,并重申这个问题:

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

    我的假设在这里正确吗?通过所需的,我认为让用户尽快知道电子邮件地址不可用是很合理的。例如:
    John Doe : jdoe@gmail.com
    Jane Doe : jdoe@gmail.com
    

    最佳答案

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

    引用问题的第一部分。如果用户没有立即验证其电子邮件。您可能意味着通过代码确认。我更喜欢使用发送到电子邮件的链接进行确认,从而避免了此问题。

    关于amazon-web-services - AWS Cognito工作流程:使用电子邮件别名作为主要用户名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42515859/

    相关文章:

    amazon-web-services - 使用 Cognito 进行身份验证 - 在哪里可以找到日志

    amazon-web-services - AWS Cognito不发送验证短信

    facebook - AWS Cognito 将用户切换到联合账户

    php - 使用 v4 创建上传表单文件到 s3

    python - 从 EC2 实例访问 Amazon S3 Bucket

    amazon-web-services - Tomcat部署使用maven插件

    amazon-web-services - 使用 AWS Cognito 和 Serverless 实现基于角色的访问控制

    css - 缓存 : Set expiration date for images

    python - 尝试从 AWS Lambda 连接到 Boto3 客户端并接收超时

    aws-cognito - 如何重置已过期的 Cognito 用户密码?