我们正在使用 AWS Cognito。我们使用
AdminCreateUser
API 添加用户,他们会收到临时密码。不幸的是,其中一些人在 7 天内(临时密码过期期限)没有登录,现在当他们尝试使用过期的临时密码登录时,AWS Cognito 返回此错误:
用户帐户已过期,必须由管理员重置。
对于这种情况,我们从用户池中删除该用户并重新创建。但这很耗时。
根据 documentation,我们可以使用相同的
AdminCreateUser
API,仅使用用户名和 MessageAction = RESEND
,将邀请消息重新发送给已存在的用户,并重置用户帐户的过期限制。
但是我们不想发送默认电子邮件,我们想发送我们自己的电子邮件,因为我们已经设置了
MessageAction = SUPPRESS
。根据文档, MessageAction
只能有一个值 RESEND or SUPPRESS
。
有什么方法我们可以重置过期限制,或者如果我们使用上述方法,我们应该能够从我们的一端发送电子邮件而不是使用默认电子邮件。
我通过使用 AWS 的 .NET 客户端向
AdminCreateUser
API 发送以下请求解决了该问题:
var adminCreateUserRequest = new AdminCreateUserRequest
{
UserPoolId = _poolId,
MessageAction = MessageActionType.RESEND,
Username = request.Username,
TemporaryPassword = request.TemporaryPassword,
DesiredDeliveryMediums = new List<string> { "EMAIL" }
};
await _authProvider.AdminCreateUserAsync(adminCreateUserRequest);
在上面的代码中,
_authProvider
是AmazonCognitoIdentityProviderClient
的一个实例。 TemporaryPassword
表示要设置的新临时密码,DesiredDeliveryMediums
指定“EMAIL”作为传递方式,因为创建用户池时禁用了电子邮件通知。