【问题标题】:How to set the Sort Key(Secondary key) in AWS Cognito?如何在 AWS Cognito 中设置排序键(辅助键)?
【发布时间】:2021-04-06 02:46:13
【问题描述】:

我正在使用 Cognito 用户池进行 iOS 应用用户注册。通常,在使用 Cognito 注册用户时,我使用电子邮件作为用户 ID。而且我还在收集其他信息,例如电话号码、公司名称等。在这种情况下,当我尝试使用具有不同公司名称的相同电子邮件 ID 进行注册时,它会显示类似用户已存在的警报。

在我的新工作案例中,我想用不同的公司名称保存/注册同一个电子邮件。我怎样才能实现它?

例如,如果我们使用的是 DynamoDB 表,我们有分区键和排序键。通过使用这些我们将电子邮件设置为分区键,将企业名称设置为排序键,我们可以实现唯一性。

我们可以使用 Cognito 实现相同的功能吗? Cognito 是否支持分区键和排序键概念? 有没有办法通过使用 Cognito 来实现这一点? 请帮我解决这个问题。

【问题讨论】:

  • 不,cognito 用户池不能那样工作。但是您可以利用可写属性来存储一些字段。请问你想要的目标是什么,我不是很明白你会去哪里?
  • @MahdiRidho 我想要的是,我想在 Cognito 中使用 UserID 和其他一些键的组合来保存用户。在我的例子中,企业名称代表一个组织,许多用户可以在该组织下工作。并且同一用户可以在另一个组织下工作。

标签: ios amazon-web-services amazon-cognito


【解决方案1】:

让我们从这个链接开始:

Configuring User Pool Attributes

您可以拥有可更改的标准属性,只要它们不是必需的。您也可以添加自定义属性,但它们是不可更改的。

好吧,让我们继续讨论一些项目的另一个案例,我需要将用户联合身份 ID(即 ap-northeast-1:3c2f5c30-0dc8-4d74-91a8-bf5c688abcde)存储到 cognito 用户池属性中。我应该将它存储在自定义属性中(即 custom:identity_id),因为它在未来永远不会改变。

回到您的案例,因为它将是动态值,用户可以更改他们的组织列表,以便您可以利用未使用的标准属性。例如,我将使用“zoneinfo”,尽管使用未关联的属性看起来很奇怪,因为没有名称为“organization”的属性。但是,至少用户可以在登录后从他们的令牌中提取他们的组织,如下所示:

"zoneinfo": "[org1, org2, org3, etc]"

但它不能完全适应您的情况,因为它应该在用户注册后存储。而如果你在需要注册时设置了“zoneinfo”,那么它必须是不可更改的。为了解决这个问题,您可以利用认知用户池Post-Confirmation trigger 运行一些逻辑来初始化具有空组织列表的标准属性(即“zoneinfo”:“[]”)adminUpdateUserAttributes。这样用户就可以修改这个属性,因为它不是必需的属性。

adminUpdateUserAttributes 示例:

async function updateOrgAttr() {
  try {
    var params = {
      UserAttributes: [ /* required */
        {
          Name: 'zoneinfo', /* required */
          Value: '[]'
        }
      ],
      UserPoolId: 'ap-northeast-1_xxxxxxxx', /* required */
      Username: event.userName /* event.userName is an item of post-confirmation trigger event source */
    };
    let cognitoidentityserviceprovider = new AWS.CognitoIdentityServiceProvider();
    await cognitoidentityserviceprovider.adminUpdateUserAttributes(params).promise()
  } catch(e) {
    throw e
  }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-27
    • 2017-07-21
    • 1970-01-01
    • 1970-01-01
    • 2011-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多