创建新的Cognito用户时,我想通过“预注册” lambda确认其帐户。它看起来如下:
exports.handler = function (event, context, callback) {
event.response.autoConfirmUser = true;
event.response.autoVerifyEmail = true;
callback(null, event);
};
调用上面的函数(检查日志),并返回事件,并且创建用户时没有任何错误。但是,以隐身模式查看用户时,帐户状态仍设置为:
FORCE_CHANGE_PASSWORD
如果有帮助,adminCreateUser函数如下所示:
adminCreateUser({
UserPoolId: process.env.AUTH_COGNITO_USERPOOLID,
Username: email,
DesiredDeliveryMediums: ['EMAIL'],
ForceAliasCreation: true,
TemporaryPassword: temporaryPassword,
UserAttributes: [
{
Name: 'email',
Value: email,
},
{
Name: 'email_verified',
Value: 'true'
},
],
ClientMetadata: {
role,
},
})
我在做什么错?任何帮助表示赞赏。如果需要更多信息,请告诉我。
答案 0 :(得分:1)
使用预注册触发器,您只能将电子邮件/电话设置为verified
或将用户状态设置为CONFIRMED
。如果您使用AdminCreateUser
API,则在任何情况下都需要更改密码。
您可以尝试的几个选项:
SignUp
API:https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SignUp.html AdminSetUserPassword
之后使用对AdminCreateUser
API的后续调用来更改用户密码:https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminSetUserPassword.html