ios - 使用 Cognito 用户 ID 将数据存储到 DynamoDB
<p><p>我使用 AWS Mobile Hub 设置我的 iOS 应用程序。我使用的服务是 AWS Cognito 和 AWS DynamoDB。</p>
<p>我在 AWS DynamoDB 上创建了一个私有(private)表,该表默认具有分区键 <code>userId</code>。据我所知,AWS DynamoDB 仅允许 <code>userId</code> 是来自例如的 <code>identityId</code> <code>AWSIdentityManager</code>.</p>
<p>我能够通过 <code>AWSCognitoIdentityUserPool.default().currentUser()?.getSession()</code> 成功建立用户 session 。 </p>
<p>我使用 <code>identityId</code> 读取/写入 AWS DynamoDB,我通过 <code>AWSIdentityManager.default().identityId</code> 作为 <code>userId</code> 获得。 </p>
<p>但是,<code>identityId</code> 在设备上始终保持不变,即使我已经建立了用户 session 。 </p>
<p>如何从 <code>AWSIdentityManager</code> 获取特定于 AWS Cognito 用户的 <code>identityId</code>?</p></p>
<br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
<p><p>编辑:</p>
<p>IdentityId 对于每个 cognito 用户都是唯一的,正如我们在评论线程中一起发现的那样,但它们被缓存在设备上,需要在注销时清除。通过 swift sdk 清除:</p>
<pre><code>AWSCognitoIdentityProvider.Clear()
</code></pre>
<p>以下是我的原始答案,建议使用每个 cognito 用户也是唯一的用户名或别名,但它只能用作评论讨论的引用。改为使用 IdentityId 作为 dyanmodb 主键。</p>
<p>结束编辑:</p>
<p>我建议使用用户名作为 dynamodb 表中的分区键。 </p>
<p>您可以通过</p>从 AWSCognitoIdentityUser 对象中获取用户名
<pre><code>if let username = AWSCognitoIdentityUserPool.default().currentUser()?.username {
// do stuff with username
}
</code></pre>
<p>您还可以将用户池配置为使用自定义用户名别名,以允许用户通过电子邮件和/或电话号码登录。在这种情况下,电子邮件和/或电话号码也将是唯一的,然后如果您愿意,您可以使用其中任何一个作为 dynamodb 表中的唯一分区键。这是 <a href="https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-settings-attributes.html#user-pool-settings-aliases" rel="noreferrer noopener nofollow">overview of aliases</a>在认知中。</p></p>
<p style="font-size: 20px;">关于ios - 使用 Cognito 用户 ID 将数据存储到 DynamoDB,我们在Stack Overflow上找到一个类似的问题:
<a href="https://stackoverflow.com/questions/50495962/" rel="noreferrer noopener nofollow" style="color: red;">
https://stackoverflow.com/questions/50495962/
</a>
</p>
页:
[1]