在 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 触发器解决了这个问题。并将角色作为用户属性传递给它,然后根据角色自动验证电子邮件和用户。
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 触发器解决了这个问题。并将角色作为用户属性传递给它,然后根据角色自动验证电子邮件和用户。