我建立了一个使用 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