检查用户 phone_number 是不是已存在于 aws cognito 用户池中

Posted

技术标签:

【中文标题】检查用户 phone_number 是不是已存在于 aws cognito 用户池中【英文标题】:Check if user phone_number already exist in aws cognito userpool检查用户 phone_number 是否已存在于 aws cognito 用户池中 【发布时间】:2021-08-28 18:56:58 【问题描述】:

我在 aws 上使用无服务器 lambda 函数在 cognito 用户池中进行用户身份验证。我只要求用户提供他的电话号码并向他发送 otp 以进行验证。当用户注销并再次登录时,问题就出现了。我无法决定何时为用户调用 signUp 或登录。 我猜,我需要在预注册之前触发一个 lambda 调用,它验证用户电话号码已经存在于用户池中,我需要从客户端调用 Amplify.Auth.signIn api。如果没有,请从客户端致电Amplify.Auth.signUpapi。但我找不到任何文件。我使用颤振作为我的前端。请帮忙。

我的注册前 lambda 函数如下所示:

exports.handler = async (event) => 
    console.log('Received EVENT', JSON.stringify(event, null, 2));
    event.response.autoConfirmUser = true;
    event.response.autoVerifyPhone = true;
    return event;
;

【问题讨论】:

【参考方案1】:

您可以为此使用CognitoIdentityServiceProvider.listUsers

const cognitoIdentityServiceProvider = new CognitoIdentityServiceProvider();

const result = await this.cognitoIdentityServiceProvider.listUsers(
 UserPoolId: process.env.USER_POOL_ID,
 Filter: `phone_number = \"$phoneNumber\"`
).promise();

return result.Users.length > 0 ? result.Users[0].Username : undefined;

【讨论】:

这个解决方案是否适用于颤振? @Sumchans 如果您使用的是 NodeJS 和 AWS NodeJS 开发工具包,那么可以。 当没有会话活动时如何使用放大拨打电话。

以上是关于检查用户 phone_number 是不是已存在于 aws cognito 用户池中的主要内容,如果未能解决你的问题,请参考以下文章

如何检查某个数据是不是已存在于firestore中

使用 MySQLi 检查用户名是不是已存在

如何检查项目是不是存在于多个数组中

使用 Python 检查标签是不是已存在于 Adwords 帐户中?

检查 ScanResult 网络是不是已配置(存在于 getConfiguredNetworks() 列表中)

如何检查对象是不是已存在于列表中