使用 Cognito 用户 ID 将数据存储到 DynamoDB
Store data to DynamoDB with the Cognito userId
我使用 AWS Mobile Hub 设置我的 iOS 应用程序。我使用的服务是 AWS Cognito 和 AWS DynamoDB。
我在 AWS DynamoDB 上创建了一个默认分区键 userId
的私有 table。据我所知,AWS DynamoDB 只允许 userId
来自例如 identityId
AWSIdentityManager
.
我能够通过 AWSCognitoIdentityUserPool.default().currentUser()?.getSession()
成功建立用户会话。
我 read/write 使用 identityId
到 AWS DynamoDB,我通过 AWSIdentityManager.default().identityId
作为 userId
。
但是,identityId
在设备上始终保持不变,即使我已经建立了用户会话。
如何从 AWSIdentityManager
获取特定于 AWS Cognito 用户的 identityId
?
编辑:
正如我们在评论线程中一起发现的那样,每个认知用户的 IdentityId 都是唯一的,但它们缓存在设备上,需要在注销时清除。通过 swift sdk 清除:
AWSCognitoIdentityProvider.Clear()
以下是我的原始答案,建议使用用户名或别名,每个 Cognito 用户也是唯一的,但它仅应用作评论讨论的参考。改用 IdentityId 作为 dyanmodb 主键。
编辑结束:
我建议在您的 dynamodb table 中使用用户名作为分区键。
您可以通过
从 AWSCognitoIdentityUser 对象中获取用户名
if let username = AWSCognitoIdentityUserPool.default().currentUser()?.username {
// do stuff with username
}
您还可以将用户池配置为使用自定义用户名别名,以允许用户通过电子邮件 and/or phone 号码登录。在这种情况下,电子邮件 and/or phone 号码也将是唯一的,然后如果您愿意,您可以使用其中任何一个作为 dynamodb table 中的唯一分区键。这是 cognito 中的 overview of aliases。
我使用 AWS Mobile Hub 设置我的 iOS 应用程序。我使用的服务是 AWS Cognito 和 AWS DynamoDB。
我在 AWS DynamoDB 上创建了一个默认分区键 userId
的私有 table。据我所知,AWS DynamoDB 只允许 userId
来自例如 identityId
AWSIdentityManager
.
我能够通过 AWSCognitoIdentityUserPool.default().currentUser()?.getSession()
成功建立用户会话。
我 read/write 使用 identityId
到 AWS DynamoDB,我通过 AWSIdentityManager.default().identityId
作为 userId
。
但是,identityId
在设备上始终保持不变,即使我已经建立了用户会话。
如何从 AWSIdentityManager
获取特定于 AWS Cognito 用户的 identityId
?
编辑:
正如我们在评论线程中一起发现的那样,每个认知用户的 IdentityId 都是唯一的,但它们缓存在设备上,需要在注销时清除。通过 swift sdk 清除:
AWSCognitoIdentityProvider.Clear()
以下是我的原始答案,建议使用用户名或别名,每个 Cognito 用户也是唯一的,但它仅应用作评论讨论的参考。改用 IdentityId 作为 dyanmodb 主键。
编辑结束:
我建议在您的 dynamodb table 中使用用户名作为分区键。
您可以通过
从 AWSCognitoIdentityUser 对象中获取用户名if let username = AWSCognitoIdentityUserPool.default().currentUser()?.username {
// do stuff with username
}
您还可以将用户池配置为使用自定义用户名别名,以允许用户通过电子邮件 and/or phone 号码登录。在这种情况下,电子邮件 and/or phone 号码也将是唯一的,然后如果您愿意,您可以使用其中任何一个作为 dynamodb table 中的唯一分区键。这是 cognito 中的 overview of aliases。