刷新 AWS.config.credentials
Refresh of AWS.config.credentials
我正在尝试找到一种正确的方法来刷新我从 Cognito 获得的 AWS.config.credentials。我正在使用开发人员授权身份,并且工作正常。我获得了凭据,如果我执行 refresh(),AWS.config.credentials.expireTime 也会按预期更新。
凭据在一小时后过期,所以我想我可以使用 setTimeout 来刷新凭据并根据 credentials.expireTime(我计算的是毫秒数)进行配置。
但是,我似乎必须更频繁地执行刷新。凭证会在它们的时间之前超时。如果我将延迟减少到更小的数量,setTimeout 方法就可以正常工作,但我不想过度刷新。
这是真的吗?如果是的话,我需要多久做一次?每 5 分钟左右刷新一次似乎过分了:/
循环刷新
function refreshAwsCredentials() {
clearTimeout(awsRenewalTimeout);
// perform credentials renewal
AwsService.refreshAwsCredentials()
.then( function () {
awsRenewalTimeout = setInterval(
function () {
refreshAwsCredentials();
}, AWS.config.credentials.expireTime.getTime() - new Date().getTime() - 300000
);
})
.catch( function (error) {
// checks error, normally it basically logs in, then refreshes
});
}
AwsService.refreshAwsCredentials()
if ( AWS.config.credentials.needsRefresh() ) {
AWS.config.credentials.refresh( function (error) {
if (error) {
// rejects promise with error message
}
else {
// resolves promise
}
});
}
我终于发现我检查的身份验证错误太具体了。我检查了是否已登录,而不是凭据已超时。现在,我会在失败时尝试登录,并且在需要时解决了凭据超时问题。
我正在尝试找到一种正确的方法来刷新我从 Cognito 获得的 AWS.config.credentials。我正在使用开发人员授权身份,并且工作正常。我获得了凭据,如果我执行 refresh(),AWS.config.credentials.expireTime 也会按预期更新。
凭据在一小时后过期,所以我想我可以使用 setTimeout 来刷新凭据并根据 credentials.expireTime(我计算的是毫秒数)进行配置。
但是,我似乎必须更频繁地执行刷新。凭证会在它们的时间之前超时。如果我将延迟减少到更小的数量,setTimeout 方法就可以正常工作,但我不想过度刷新。
这是真的吗?如果是的话,我需要多久做一次?每 5 分钟左右刷新一次似乎过分了:/
循环刷新
function refreshAwsCredentials() {
clearTimeout(awsRenewalTimeout);
// perform credentials renewal
AwsService.refreshAwsCredentials()
.then( function () {
awsRenewalTimeout = setInterval(
function () {
refreshAwsCredentials();
}, AWS.config.credentials.expireTime.getTime() - new Date().getTime() - 300000
);
})
.catch( function (error) {
// checks error, normally it basically logs in, then refreshes
});
}
AwsService.refreshAwsCredentials()
if ( AWS.config.credentials.needsRefresh() ) {
AWS.config.credentials.refresh( function (error) {
if (error) {
// rejects promise with error message
}
else {
// resolves promise
}
});
}
我终于发现我检查的身份验证错误太具体了。我检查了是否已登录,而不是凭据已超时。现在,我会在失败时尝试登录,并且在需要时解决了凭据超时问题。