Mik*_*ick 5 javascript amazon-web-services amazon-cognito aws-amplify
背景
我aws-amplify用来与Cognito互动。因此,当用户向我的应用注册时,我会致电Auth.signUp()。我仅将用户名(电子邮件)和密码传递给此功能。
我的用户池配置为仅允许通过电子邮件登录:
错误?
在我的前端代码中,我不小心将事件侦听器注册了两次,因此Auth.signUp()被两次调用(同时或至少快速连续地)使用相同的参数。
这导致使用相同的电子邮件在我的用户池中创建了两个用户。我对用户池配置的了解表明,这不可能。
比赛条件?
我的第一个想法是,由于我将两个请求如此紧密地发送在一起,因此这可能是不可避免的竞争条件。如果我在两次调用之间引入了人为的暂停(断点或setTimeout说),则一切都会按预期进行。
但是,即使请求之间的间隔很小,第二个请求也确实会返回我期望的错误响应:
{ code: 'InvalidParameterException',
name: 'InvalidParameterException',
message: 'Alias entry already exists for a different username'
}
Run Code Online (Sandbox Code Playgroud)
令人遗憾的是,此响应具有误导性,因为我确实在该请求池中创建了第二个(重复的)用户。
MCVE
通过Auth.signUp在节点脚本或浏览器中同时执行两次,很容易重现这一点。 该存储库包含这两个示例。
问题
jam*_*lol 10
我将此发送给 AWS 支持。他们知道这个问题,但没有预计到达时间。
感谢您联系 AWS 高级支持。我知道您想知道 Cognito 团队是否知道此处发布的问题 [1]。
我最后与 Cognito 团队进行了核实,是的,他们知道这个问题/错误。好消息是,我们已经通过 Cognito 团队打开了故障单来解决这个问题。但是,我无法提供有关此修复程序何时上线的预计到达时间,因为我对他们的开发/发布计划没有任何了解。但是,我要感谢您使我们注意到这个问题的宝贵贡献,我很感激。
| 归档时间: |
|
| 查看次数: |
962 次 |
| 最近记录: |