繁体   English   中英

禁用在 email 上发送的验证码在 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 的一类用户,email 和确认用户工作正常,但有一个警告。 即使由 admincognito 自动验证,也会发送验证代码。

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM