假设我们有一个Cognito身份池(允许未经身份验证的身份)和一个AWS Amplify会话,该会话未在其配置中指定mandatorySignIn
选项,我对此类会话的理解是,它将被提升为未经身份验证的用户在指定正确的配置之后,对吗?
还是应该首先调用AWS.Auth.currentCredentials()
?无论如何,假设在两种情况中的任何一种情况下,如果未经身份验证的用户使用AWS.Auth.signUp()
进行注册,为注册指定的身份ID是否将与AWS.Auth.currentCredentials()
指定的身份ID相同?
我问这个问题是因为我想为DynamoDB表中的未经身份验证的用户生成一个带有UUID的配置文件。
最后一个问题,如果用户关闭并重新打开应用程序,未认证的身份ID是否会保留?据我所知,它已保存在本地存储中,但我想确定。
答案 0 :(得分:0)
看来,经过身份验证和未经身份验证的身份是完全不同的。您未经身份验证的身份确实会缓存在本地存储中(您可以使用Shift + F9在浏览器中查看它),它与您创建/身份验证的任何身份都不相同。
您希望将身份ID用作DynamoDB表中的密钥,因为它对于经过身份验证的用户和未经身份验证的用户都是唯一的。您还可以为已认证和未认证的用户使用不同的策略定义特定的IAM角色。
如果您想获取当前用户的identityId
,可以致电AWS.Auth.currentCredentials()
,您会注意到,只要您在未登录时获取凭据,便会获得本地缓存的未经身份验证的身份凭据,但登录时将取回已认证身份的凭证。漂亮的东西!