2017-07-31 121 views
0

我正在使用Cognito用户池和Cognito联合身份将IAM角色传递给经过身份验证和未经身份验证的用户。当我尝试将用户从未经身份验证切换到身份验证时,开发人员控制台不会注册发生更改;它显示我有100%未经验证的用户。Cognito不会将未经身份验证的用户切换为经过身份验证的用户

现在我将我的AWS客户端实例化为未经身份验证的用户,然后调用一个函数在可用时更新凭证,以便我可以将其切换为已验证身份。例如:

AWS.config.region = 'us-west-2'; 
AWS.config.credentials = new AWS.CognitoIdentityCredentials({ 
    IdentityPoolId: identityPoolId, 
    region: 'us-west-2', 
    Logins: {} 
}); 

const updateCredentials =() => { 
    const auth = store.getState().auth; //this gets the authentication credentials from a global store. 
    AWS.config.credentials.Logins = { 
    'cognito-idp.us-west-2.amazonaws.com/us-west-2_XXXXXXXXX': auth.idToken 
    }; 
    AWS.config.credentials.expired = true; 
}; 

尽我所知,这是正确的方法。请参阅文档at the bottom of this pageherehere

但是,我的控制台显示我没有经过身份验证的用户,所以updateCredentials不会切换用户进行身份验证。可以做些什么来解决这个问题?

回答

1

最后致电AWS.config.credentials.get(()....)

+0

这并没有提供问题的答案。要批评或要求作者澄清,请在其帖子下方留言。 - [来自评论](/ review/low-quality-posts/16899974) –

+0

这是一个解决方案,问题是关于没有认识用户创建...并使用'.get' ...创建它并显示在控制台 – UXDart

+0

UXDart是正确的,Logister所做的是填充一些静态地图。出于某种原因,AWS JavaScript SDK需要调用get或refresh来实际检索证书。否则,用户将显示为未经身份验证。 –

相关问题