如何在boto3中获取验证码与改密码?Moto测试技术咨询
在Moto中获取Cognito注册确认码和重置密码验证码
获取注册确认验证码
Moto模拟Cognito时,注册生成的确认码不会通过真实邮箱发送,而是直接存储在模拟的用户对象中。你可以通过Moto的后端API直接提取这个验证码:
- 完成用户注册流程后,获取Moto的Cognito后端实例
- 通过用户池ID和用户名定位目标用户
- 读取用户对象的
confirmation_code属性
示例代码:
import boto3 from moto.cognitoidp.models import cognitoidp_backends # 初始化模拟客户端 client = boto3.client("cognito-idp", region_name="us-east-1") # 假设已创建用户池、客户端并完成注册 user_pool_id = "你的用户池ID" username = "test@example.com" # 获取Moto后端实例 backend = cognitoidp_backends["us-east-1"] user_pool = backend.get_user_pool(user_pool_id) user = user_pool.get_user(username) # 提取注册确认码 confirmation_code = user.confirmation_code
获取重置密码验证码
对于密码重置流程(忘记密码),Moto会把验证码存储在用户对象的forgot_password_code属性中,操作步骤类似:
- 调用
forgot_password接口触发重置流程 - 通过Moto后端获取用户对象
- 读取
forgot_password_code属性
示例代码:
# 触发忘记密码请求 client.forgot_password(ClientId="你的客户端ID", Username=username) # 获取重置验证码 backend = cognitoidp_backends["us-east-1"] user_pool = backend.get_user_pool(user_pool_id) user = user_pool.get_user(username) reset_code = user.forgot_password_code
注意:这种方式依赖Moto内部的模型属性,测试场景下稳定,但如果Moto版本更新可能需要调整。若不想直接依赖内部API,部分Moto版本会将验证码放在admin_get_user返回的UserAttributes的cognito:confirmation_code字段中,但直接访问后端模型是最可靠的方式。
内容的提问来源于stack exchange,提问作者Vinicius Caetano
相关产品推荐
相关产品推荐

