使用Cognito userId

时间:2018-05-23 19:18:54

标签: ios amazon-web-services amazon-dynamodb aws-sdk aws-cognito

我使用AWS Mobile Hub设置我的iOS应用程序。我使用的服务是AWS Cognito和AWS DynamoDB。

我在AWS DynamoDB上创建了一个私有表,默认情况下包含分区键userId。据我所知,AWS DynamoDB仅允许userId成为identityId,例如AWSIdentityManagerAWSCognitoIdentityUserPool.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>

1 个答案:

答案 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