我使用AWS Mobile Hub设置我的iOS应用程序。我使用的服务是AWS Cognito和AWS DynamoDB。
我在AWS DynamoDB上创建了一个私有表,默认情况下包含分区键userId
。据我所知,AWS DynamoDB仅允许userId
成为identityId
,例如AWSIdentityManager
。 AWSCognitoIdentityUserPool.default().currentUser()?.getSession()
。
我能够通过identityId
成功建立用户会话。
我使用AWSIdentityManager.default().identityId
读取/写入AWS DynamoDB,我通过userId
获得identityId
。
但是,即使我已经建立了用户会话,identityId
在设备上始终保持不变。
如何从AWSIdentityManager
获取特定于AWS Cognito用户的 <ul class="sortable">
<li>Item 1<i class="sorthandle"></i></li>
<li>Item 2<i class="sorthandle"></i></li>
</ul>
?
答案 0 :(得分:2)
编辑:
IdentityId对于每个认知用户都是唯一的,因为我们在评论帖中一起发现,但它们被缓存在设备上,需要在注销时清除。通过swift sdk清除:
AWSCognitoIdentityProvider.Clear()
以下是我的原始答案,建议使用用户名或别名,每个Cognito用户也是唯一的,但它只能用作评论讨论的参考。请改用IdentityId作为dyanmodb主键。
END-编辑:
我建议您使用用户名作为您的dynamodb表中的分区键。
您可以通过
从AWSCognitoIdentityUser对象获取用户名if let username = AWSCognitoIdentityUserPool.default().currentUser()?.username {
// do stuff with username
}
您还可以将用户池配置为使用自定义用户名别名,以允许用户通过电子邮件和/或电话号码登录。在这种情况下,电子邮件和/或电话号码也是唯一的,如果您愿意,您可以使用其中任何一个作为您的dynamodb表中的唯一分区键。这是认知感中的overview of aliases。