通过登录流程重置/撤销Cognito MFA绑定手机号并更新的相关问题
Amplify Cognito 管理员重置用户手机号问题解决方案
已查阅所有相关问题,均与实际场景不完全匹配。
场景说明
管理员可重置任意用户的绑定手机号,重置/撤销手机号后,若用户处于登录状态会被强制登出,后续用户需重新走登录流程,在流程中填写新手机号并接收新手机号下发的验证码完成验证。
实际问题
- 当管理员将用户联系号码设为空值时,会因
phone_number_verified标识触发MFA报错,无法像操作phone_number字段一样更新该标识 - 不删除原有号码直接尝试更新号码时,Amplify会向前手机号发送验证码
解决方案
你可以通过Cognito的AdminUpdateUserAttributes API同时清空phone_number属性、删除phone_number_verified属性,直接解决该问题。
操作代码示例(Node.js AWS SDK v3)
import { CognitoIdentityProviderClient, AdminUpdateUserAttributesCommand } from "@aws-sdk/client-cognito-identity-provider"; // 初始化Cognito客户端 const cognitoClient = new CognitoIdentityProviderClient({ region: "你的AWS区域" }); const resetUserPhoneParams = { UserPoolId: "你的Cognito用户池ID", Username: "目标用户的用户名/ID", // 清空手机号属性 UserAttributes: [ { Name: "phone_number", Value: "" } ], // 指定要删除的验证标识属性 UserAttributeDeleteList: [ "phone_number_verified" ] }; // 执行请求 const command = new AdminUpdateUserAttributesCommand(resetUserPhoneParams); await cognitoClient.send(command);
效果说明
- 操作完成后不会触发MFA报错,原有手机号相关的所有属性都会被清空
- 后续用户重新登录时会进入手机号重新绑定流程,验证码会发送到用户新填写的手机号,不会再向旧手机号发送验证信息
内容的提问来源于stack exchange,提问作者Muhammad Arqam
相关产品推荐
相关产品推荐

