AWS Cognito测试环境

sco*_*567 8 amazon-web-services amazon-cognito

我目前正在使用AWS Cognito来管理我们应用程序的用户身份验证.我遇到的一个障碍是想出一个实现"测试"或"qa"环境的好方法.

我的API有很多自动化测试,可以用随机数据创建用户.显然,我不希望Cognito在此环境中发送实际的SMS或电子邮件消息.此外,在进行手动测试时,我们将使用假电话号码和电子邮件创建大量用户.有没有办法在"开发"模式下打开用户池,其中所有消息都以某种方式记录?

sco*_*567 2

以下是我在 AWS Cognito 中创建“临时”环境用户池所做的操作,该环境不会向用户发送真正的通知。实际上涉及到几个不同的部分,但我认为我能够涵盖所有内容。话虽这么说,如果 Cognito 简单地提供一个用户池设置来关闭所有通知,那肯定会很好,这样我就不必将特定于环境的逻辑写入我的代码中。

阻止用户邀请

在我们的应用程序中,我们使用 AdminCreateUser 函数来创建受到其他用户邀请的用户。此功能通常会向新用户的电话号码或电子邮件发送邀请消息。为了防止这些邀请,您可以将MessageAction: 'SUPPRESS'参数作为参数提供给函数。就像这样:

let params = {
    UserPoolId: config.cognitoUserPoolId,
    Username: uuid.v4(),
    MessageAction: 'SUPPRESS', /* IMPORTANT! */
    TemporaryPassword: user.phone_number.slice(-6),
    UserAttributes: [
        { Name: 'given_name', Value: user.first_name },
        { Name: 'family_name', Value: user.last_name },
        { Name: 'phone_number', Value: user.phone_number }
    ]
};

cognito.adminCreateUser(params).promise().then(data => {
    console.log(data);
});
Run Code Online (Sandbox Code Playgroud)

官方文档在这里:http://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminCreateUser.html

阻止用户属性更新验证

在我们的生产应用程序中,我们希望用户在电话号码或电子邮件发生变化时必须重新验证。但在我们的暂存环境中,我们实际上并不需要这个。因此,请取消选中“您想要验证电子邮件或电话号码吗?”下的电子邮件和电话复选框。用户池设置中的部分。

用户池设置