AWS Cognito - 是否可以使用临时密码重新发送注册电子邮件?
AWS Cognito - Possible to resend Signup Email with temporary password?
搜索官方 AWS CLI cognito-idp 文档后,似乎无法 'reset' 用户在某个时间点被确认后回到 FORCE_CHANGE_PASSWORD
状态。
看来唯一的办法就是复制用户数据,删除用户账号,然后用复制的数据为用户重新创建一个新账号,例如:
client = boto3.client("cognito-idp", AWS_REGION)
try:
user = client.admin_get_user(user_pool_id, user_id) # get user
user_data = get_from(user) # copy user data
client.admin_delete_user(user_pool_id, user_id) # delete user
response = client.admin_create_user(**user_data) # create new user?
except Exception as e:
handle(e)
这将使用户处于 FORCE_CHANGE_PASSWORD
状态,并重新触发注册 email/message 这是期望的结果,但是,这似乎容易出现各种问题...
注意:我已经尝试再次调用 admin_create_user
并将消息操作设置为 'resend',但是,如果用户在任何时候都处于 CONFIRMED
状态,该调用将导致以下错误消息:
(UnsupportedUserStateException) when calling the AdminCreateUser
operation: Resend not possible. XXXXXXXXXXXXXXX status is not
FORCE_CHANGE_PASSWORD
另一种选择是单独调用以获取用户的当前状态,如果他们处于已确认状态,则调用 admin-reset-user-password
,这至少可以缓解由删除帐户...
肯定有更优雅的解决方案吗?
对于遇到类似问题的任何人,事实证明这与将 email verified
作为用户池的要求有关。我怀疑如果您不需要验证您的用户电子邮件地址,您就不会 运行 进入这个问题。
搜索官方 AWS CLI cognito-idp 文档后,似乎无法 'reset' 用户在某个时间点被确认后回到 FORCE_CHANGE_PASSWORD
状态。
看来唯一的办法就是复制用户数据,删除用户账号,然后用复制的数据为用户重新创建一个新账号,例如:
client = boto3.client("cognito-idp", AWS_REGION)
try:
user = client.admin_get_user(user_pool_id, user_id) # get user
user_data = get_from(user) # copy user data
client.admin_delete_user(user_pool_id, user_id) # delete user
response = client.admin_create_user(**user_data) # create new user?
except Exception as e:
handle(e)
这将使用户处于 FORCE_CHANGE_PASSWORD
状态,并重新触发注册 email/message 这是期望的结果,但是,这似乎容易出现各种问题...
注意:我已经尝试再次调用 admin_create_user
并将消息操作设置为 'resend',但是,如果用户在任何时候都处于 CONFIRMED
状态,该调用将导致以下错误消息:
(UnsupportedUserStateException) when calling the AdminCreateUser operation: Resend not possible. XXXXXXXXXXXXXXX status is not FORCE_CHANGE_PASSWORD
另一种选择是单独调用以获取用户的当前状态,如果他们处于已确认状态,则调用 admin-reset-user-password
,这至少可以缓解由删除帐户...
肯定有更优雅的解决方案吗?
对于遇到类似问题的任何人,事实证明这与将 email verified
作为用户池的要求有关。我怀疑如果您不需要验证您的用户电子邮件地址,您就不会 运行 进入这个问题。