在使用AWS Cognito时,可以通过设置密码重置代码的过期时间来解决电子邮件忘记密码代码几乎立即过期的问题。以下是一个示例代码,演示如何设置密码重置代码的过期时间为30分钟:
import boto3
from datetime import datetime, timedelta
def set_password_reset_code_expiration_time(user_pool_id, client_id, username):
client = boto3.client('cognito-idp')
# 计算过期时间(当前时间 + 30分钟)
expiration_time = datetime.now() + timedelta(minutes=30)
expiration_time_epoch = int(expiration_time.timestamp())
# 设置密码重置代码的过期时间
response = client.admin_create_user(
UserPoolId=user_pool_id,
Username=username,
TemporaryPassword='TEMPORARY_PASSWORD',
MessageAction='RESEND',
ClientId=client_id,
UserAttributes=[
{
'Name': 'custom:password_reset_code_expiration_time',
'Value': str(expiration_time_epoch)
}
]
)
print('密码重置代码的过期时间已设置为:', expiration_time)
# 示例用法
set_password_reset_code_expiration_time('your_user_pool_id', 'your_client_id', 'user@example.com')
在上述代码中,首先需要使用正确的user_pool_id和client_id进行AWS Cognito客户端的初始化。然后,通过调用admin_create_user方法来创建一个用户,并将密码重置代码的过期时间作为自定义用户属性custom:password_reset_code_expiration_time进行设置。在本例中,过期时间设置为当前时间加上30分钟。
请根据你的具体应用程序要求和AWS Cognito的配置来调整过期时间的值。