【问题标题】:search amazon cognito users by custom attribute按自定义属性搜索 amazon cognito 用户
【发布时间】:2019-04-16 23:58:36
【问题描述】:

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

【问题讨论】:

    标签: javascript react-native amazon-cognito aws-amplify


    【解决方案1】:

    很遗憾,您根本无法单独使用 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-gateway)来尝试添加/更新表并使用 cognito Admin API 来更新用户的“只读”自定义属性。

    【讨论】:

    • 在这种情况下我不会使用 API 网关。我会使用 cognito 'PreSignUp_SignUp' lambda 触发器在 DynamoDB 上进行搜索,然后在发生冲突时拒绝注册。然后我会使用 cognito 'PostConfirmation_ConfirmSignUp' lambda 触发器来添加刚刚创建的用户的自定义属性。
    【解决方案2】:

    没错,您不能搜索自定义属性。为什么您不能使用 AWS Cognito 的标准属性之一来填充与自定义属性相同的内容。只是一个想法。然后你也可以搜索以检查它的唯一性。

    标准属性:

    用户名(区分大小写)

    电子邮件

    电话号码

    名字

    给定名称

    家庭名称

    首选用户名

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

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-25
    • 2017-06-12
    • 1970-01-01
    • 1970-01-01
    • 2018-03-30
    • 2017-11-19
    • 2020-02-06
    相关资源
    最近更新 更多