NodeJS 使用cognitoIdentityServiceProvider.adminGetUser(userPool,email)检查是否存在Cognito电子邮件?

imzjd6km  于 2023-06-29  发布在  Node.js
关注(0)|答案(1)|浏览(125)

“如何确定一个用户是否已经存在于Cognito中”这个问题已经在多个论坛上被提出和回答。
但是,没有人建议使用cognitoIdentityServiceProvider.adminGetUser(params)
根据AWS文档

var params = {
  UserPoolId: 'STRING_VALUE', /* required */
  Username: 'STRING_VALUE' /* required */
};

Username — (String)
The user name of the user you want to retrieve.

如果在Cognito中,您使用uuid作为用户名,并将email配置为别名(即使用电子邮件登录),那么cognitoIdentityServiceProvider.adminGetUser(params)可以完美地传递uuidemail作为用户名参数。
是否记录了该行为?

xzabzqsa

xzabzqsa1#

我把这个答案作为一种替代和简单的方法来测试Cognito是否包含提供的电子邮件地址,如果用户通过电子邮件登录-即电子邮件是用户名的别名。我最初的问题是,是否有记录表明用户名可以是uuid或电子邮件?这一问题仍未得到答复。

var params = {
  UserPoolId: 'userpool uuid',
  Username: 'email' 
};

try {
   let result = await cognitoIdentityServiceProvider
      .adminGetUser(params).promise();
   return result
} catch (error) {
    if (error.code === "UserNotFoundException") {
      return "not found;
    } else {
      return "error";
    }
}

相关问题