在 cognito 上禁用电子邮件验证时发送的验证码

disable verification code being sent on email verification on cognito

userPool.signUp(
                userData.email,
                userData.password,
                attributeList,
                [],
                async (err, result) => {
                    if (err) {
                        failure(new HttpException(500, err.message));
                    }

                    let myCredentials = new AWS.CognitoIdentityCredentials({
                        IdentityPoolId: process.env.USER_POOL_ID!,
                    });
                    new AWS.Config({
                        credentials: myCredentials,
                        region: process.env.AWS_REGION,
                    });
                    let cognitoIdentityServiceProvider = new AWS.CognitoIdentityServiceProvider();
                    cognitoIdentityServiceProvider.adminConfirmSignUp(
                        {
                            UserPoolId: process.env.USER_POOL_ID!,
                            Username: userData.email,
                        },
                        function (err, _data) {
                            if (err) {
                                failure(err);
                            }

                            cognitoIdentityServiceProvider.adminUpdateUserAttributes(
                                {
                                    UserPoolId: process.env.USER_POOL_ID!,
                                    Username: userData.email,
                                    UserAttributes: [
                                        {
                                            Name: 'email_verified',
                                            Value: 'true',
                                        },
                                    ],
                                },
                                () => {
                                    console.log('done');
                                }
                            );
                        }
                    );

                    if (result) {
                        const cognitoUser = result.user;

                        success({ user: cognitoUser, sub: result.userSub });
                    } else {
                        failure(
                            new HttpException(
                                500,
                                'Authentication server error, please try again later'
                            )
                        );
                    }
                }
            );

这是我用来注册用户并在 Cognito 上自动验证该用户的代码。 问题是我有 2 组不同的用户角色,我正在自动确认一个用户,但我希望他们使用 Cognito 发送的代码手动确认另一个用户。

现在,对于完成 auto_confirmation 的一类用户,电子邮件和确认用户工作正常,但有一个警告。 即使 admincognito 自动验证了验证码,也会发送验证码。

我如何在这组特定的代码上禁用它,以便其他用户角色可以确认通过电子邮件发送的代码

Cognito 在这方面并不是真正可配置的。在这种情况下,您的逃生口是简单记录的 custom email sender lambda trigger。在通过 SES(或不通过 SES)发送电子邮件之前执行您想要的任何检查。

我通过创建预注册 lambda 触发器解决了这个问题。并将角色作为用户属性传递给它,然后根据角色自动验证电子邮件和用户。