You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在boto3中获取验证码与改密码?Moto测试技术咨询

在Moto中获取Cognito注册确认码和重置密码验证码

获取注册确认验证码

Moto模拟Cognito时,注册生成的确认码不会通过真实邮箱发送,而是直接存储在模拟的用户对象中。你可以通过Moto的后端API直接提取这个验证码:

  1. 完成用户注册流程后,获取Moto的Cognito后端实例
  2. 通过用户池ID和用户名定位目标用户
  3. 读取用户对象的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属性中,操作步骤类似:

  1. 调用forgot_password接口触发重置流程
  2. 通过Moto后端获取用户对象
  3. 读取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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 17:43:35