【发布时间】:2019-12-05 23:36:14
【问题描述】:
我想在用户通过电话确认之前更改用户的phone_number 属性。我的流程步骤:
用户通过用户名、密码和电话号码注册
用户必须输入手机收到的确认码。在此步骤中用户想要更改电话号码(号码错误或更改电话...)
2.1 如果第一个电话号码错误,则下一个电话号码正确 -> 只发送了一个确认码 -> 有效!
2.2 如果第一个电话号码和下一个电话号码正确 -> 已发送两个确认码(第一个 - xxx,第二个 - yyy) -> 用户输入第二个确认码,Cognito 会抛出 CodeMismatchException: Invalid verification code provided, please try again. 错误。用户输入第一个代码,用户已被确认,但在 Cognito 系统中,用户有 phone_number 是第二个数字,phone_number_verified 是 true。
我使用adminUpdateUserAttributes 更改具有状态为UNCONFIRMED 的用户的phone_number。在我拨打更改电话号码后自动发送确认码。
如何解决这个问题?
!!!更新
目前,我从我的应用程序中删除了 User can update their phone_number before they confirmed via phone 功能。
大约需要 5 天,我只是想记下我的情况。
当您尝试更新phone_number(或email)属性时,Cognito 会自动向您的手机(或电子邮件)发送确认信息,这是第一个代码 - (1st - xxx),确认代码您的新属性值(不用于用户确认)。
同时,逻辑代码调用resendConfirmationCode函数,它发送第二个代码-(2nd - yyy),这是只有第二个代码工作的主要原因(我们使用confirmSignUp函数来处理代码)。
【问题讨论】:
-
要确认场景,您有 2 个电话号码:电话 1 和电话 2。您使用电话 1 注册并使用 adminUpdateUserAttributes 将电话号码更改为电话 2。您在电话 2 上收到的代码无法确认用户,但您在电话 1 上收到的代码可以,并且确认的电话号码是电话 2?
-
@behrooziAWS 是的!这正是我的情况。我认为电话2的确认码是属性验证码(不是确认注册码),自动发送的代码会让有人尝试更改电话号码(或电子邮件)。如何暂时禁用该 SMS 功能?
标签: amazon-web-services aws-lambda amazon-cognito