我在Web应用程序中使用AWS Cognito身份验证。用户可以使用以下三种身份提供商之一进行身份验证:cognito用户池(通过用户名和密码),facebook和google。 以下是我获得凭证的方式:
AWS.config.credentials = new AWS.CognitoIdentityCredentials({
IdentityPoolId: identityPoolId,
Logins: logins
});
AWS.config.credentials.get(err => {
console.log("Amazon Cognito Identity",
AWS.config.credentials.identityId);
});
登录 - 对象,可以包含来自cognito,facebook和google的令牌。
如果用户单击“注销”按钮,Web应用程序应该怎么做?
如果当前用户存在,我可以userPool.getCurrentUser().signOut()
(当前用户仅存在于cognito用户名,密码验证中)
但是,如果有人使用Facebook或谷歌登录,我该怎么办?
答案 0 :(得分:1)
即足够(注销),会话令牌将过期,并且该用户将无法在不使用新令牌的情况下再次登录。你的认知池仍然会有提供者用户..但没关系,如果你删除它并且用户再次登录,它将是一个不同的用户,所以你需要将记录保存在认知数据库中
答案 1 :(得分:1)
JS SDK有一个名为clearCachedId的方法,它应该擦除本地状态并帮助解决这个问题。
http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/CognitoIdentityCredentials.html