使用亚马逊云科技 Cognito Userpool 时如何记住和自动刷新登录令牌?



我建立了一个使用 AWS Cognito 和 Userpool 功能的网站。

如果我离开页面,则会忘记登录,一小时后令牌将过期。

我希望当用户关闭浏览器并返回时记住登录名。

我还希望身份验证令牌自动刷新,而不仅仅是在一小时后给出错误。

我该怎么做?

用户池令牌将保存到本地存储中。在用户池对象上调用 getCurrentUser 时,您可以检索上次经过身份验证的用户对象。之后,调用 getSession 应使用刷新令牌来检索新的访问令牌(如果它们已过期),如以下示例所示。在 getSession 的回调中,您应该有一个有效的会话。

var poolData = {
    UserPoolId : '...', // Your user pool id here
    ClientId : '...' // Your client id here
};
var userPool = new AWSCognito.CognitoIdentityServiceProvider.CognitoUserPool(poolData);
var cognitoUser = userPool.getCurrentUser();
if (cognitoUser != null) {
    cognitoUser.getSession(function(err, session) {
        if (err) {
           alert(err);
            return;
        }
        console.log('session validity: ' + session.isValid());
        //You should have a valid session here
    });
}

有关如何记住用户,并且不必在页面重新加载后重新登录,请参阅此处的答案:https://stackoverflow.com/a/70383024/284651

要刷新令牌,请参阅此处文档中的文档和示例代码:https://docs.amplify.aws/lib/auth/advanced/q/platform/js/#token-refresh

这里也有一些相关的讨论:https://github.com/amazon-archives/amazon-cognito-identity-js/issues/271

最新更新