按自定义属性搜索 amazon cognito 用户

wse*_*ubr 5 javascript amazon-cognito react-native aws-amplify

我正在开发一个使用 aws-amplify 与 amazon cognito 交互的本机应用程序。在我的用例中,我需要确保自定义属性的值在所有帐户中都是唯一的。aws-amplify 似乎没有允许我通过自定义属性搜索所有帐户的 API。我怎样才能做到这一点?

tho*_*ace 6

不幸的是,您根本无法单独使用 Cognito:

https://docs.aws.amazon.com/cognito/latest/developerguide/how-to-manage-user-accounts.html#cognito-user-pools-searching-for-users-using-listusers-api

自定义属性不可搜索。这是因为只有索引属性是可搜索的,而自定义属性不能被索引。

您唯一的选择是保留您自己的数据库,将用户与属性值相关联,并在那里强制执行唯一性。例如在 DynamoDB 中,您将相应地记录用户sub(唯一 Cognito 身份)和自定义属性的值作为排序/分区键,确保普通 Cognito 客户端只能读取自定义属性,并提供您自己的 API(lambda + api-网关)尝试添加/更新表并使用 cognito Admin API 更新用户的“只读”自定义属性。


小智 5

没错,您无法搜索自定义属性。为什么不能使用 AWS Cognito 的标准属性之一作为自定义属性进行填充。只是一个想法。然后您也可以搜索以检查它的唯一性。

标准属性:

用户名(区分大小写)

电子邮件

电话号码

姓名

给定的名称

首选用户名

cognito:user_status(在控制台中称为状态)(不区分大小写)

状态(在控制台中称为已启用)(区分大小写)