如果我有一个Cognito用户池和一个Cognito身份池,并且有特定于应用程序的数据,那么在如何将这些数据结合在一起时,是否有任何事情被认为是最佳实践?如何使用Cognito用户池+ Cognito Identity Pool用户加入应用程序数据?
例如,假设我有存储在DynamoDB中的应用程序数据,可能是由用户发送的SMS /文本消息。此外,假设文本消息(如存储在数据库中)看起来像这样:
{
"account_id": "a-uuid-for-the-account",
"message_body": "Hello world",
"message_subject": "Greetings!",
"date_sent": "...",
"message_id": "..."
}
然后我会将其加入到用户池还是身份池?例如,一个单独的账户表中可能有记录,类似于此:
{
"account_id": "a-uuid-for-the-account",
"user_pool_username": "MrBloggs"
"addresses": [ "123 Springfield Road", "Blahsville" ]
}
我可以看到加入的用户群,你可能引入其他境内流离失所者和那么这将失败的缺点。那么也许你会使用身份池的身份ID?
最后,这个问题让我想知道你可能存储在用户池用户(在用户池本身)中的'属性'点是什么?以上面使用的邮政地址示例为例,如果将这些地址存储在用户池中,那么您必须分别为其他IDP中的用户存储地址 - 重复工作并使软件复杂化。
谢谢!
Cognito身份池的生成标识(身份标识)是否可以用作DynamoDB表中的主键?这是推荐的行为? – Domsware
身份合并的情况下,经过身份验证的身份标识的*唯一*时间将会改变。如果身份a具有用户池身份验证并且身份b具有Facebook,则说您给身份a的用户池令牌和身份b的facebook身份标识 - 这将触发合并。由此产生的身份标识可以是a或b,它是随机的。 –
所以,如果你可能会合并,它可能会改变,否则不会。如果您使用的是用户池,则子字段是该用户的唯一标识符,也可以使用。 –