因此,我想尽我所能地了解AWS Cognito,但遇到了一些困难。
因此,现在我可以注册一个帐户,然后验证并登录。足够简单。边缘盒是我的墙壁所在的位置。
这是我到目前为止的信息:
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.
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。 email
可能是什么,因为他们只输入了电子邮件地址。 “堆积”一词可能太过强烈,这可能是一个非常偶然的情况。
现在好的一面是,由于他们尚未“验证”自己的
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/