【发布时间】:2019-04-16 23:58:36
【问题描述】:
我正在开发一个反应原生应用程序,它使用 aws-amplify 与 amazon cognito 进行交互。在我的用例中,我需要确保自定义属性的值在所有帐户中都是唯一的。 aws-amplify 似乎没有允许我通过自定义属性搜索所有帐户的 API。我怎样才能做到这一点?
【问题讨论】:
标签: javascript react-native amazon-cognito aws-amplify
我正在开发一个反应原生应用程序,它使用 aws-amplify 与 amazon cognito 进行交互。在我的用例中,我需要确保自定义属性的值在所有帐户中都是唯一的。 aws-amplify 似乎没有允许我通过自定义属性搜索所有帐户的 API。我怎样才能做到这一点?
【问题讨论】:
标签: javascript react-native amazon-cognito aws-amplify
很遗憾,您根本无法单独使用 Cognito:
自定义属性不可搜索。这是因为只有索引属性是可搜索的,而自定义属性不能被索引。
您唯一的选择是保留您自己的数据库,将用户与属性值关联起来,并在那里强制执行唯一性。例如,在 DynamoDB 中,您将记录用户的 sub(唯一 Cognito 身份)和自定义属性的值作为相应的排序/分区键,确保普通 cognito 客户端只能读取自定义属性,并提供您自己的 API(lambda + api-gateway)来尝试添加/更新表并使用 cognito Admin API 来更新用户的“只读”自定义属性。
【讨论】:
没错,您不能搜索自定义属性。为什么您不能使用 AWS Cognito 的标准属性之一来填充与自定义属性相同的内容。只是一个想法。然后你也可以搜索以检查它的唯一性。
标准属性:
用户名(区分大小写)
电子邮件
电话号码
名字
给定名称
家庭名称
首选用户名
cognito:user_status(在控制台中称为状态)(不区分大小写)
状态(在控制台中称为启用)(区分大小写)
子
【讨论】: