我看了很多Keycloak-js的方法示例,但对以下方法缺乏清晰的解释。
updateToken(minValidity: number): KeycloakPromise<boolean, boolean>;
注意:我正在使用
"keycloak-js": "^15.0.2"
版本。以下是它的文档。
/**
* If the token expires within `minValidity` seconds, the token is refreshed.
* If the session status iframe is enabled, the session status is also
* checked.
* @returns A promise to set functions that can be invoked if the token is
* still valid, or if the token is no longer valid.
* @example
* ```js
* keycloak.updateToken(5).then(function(refreshed) {
* if (refreshed) {
* alert('Token was successfully refreshed');
* } else {
* alert('Token is still valid');
* }
* }).catch(function() {
* alert('Failed to refresh the token, or the session has expired');
* });
*/
我不是母语为英语的人。这里“expires within”这个术语不够精确。
通过一个图示更易理解。此方法 updateToken
在时间窗口 minValidity
内定期检查令牌是否已过期。
令牌何时会被刷新?
当Keycloak令牌接近到期时,令牌将会在以下两种情况下被刷新:
- 在时间窗口
minValidity
内,紧接着它的到期日期(蓝色)之前。 - 或者在下一次更新检查之后。(橙色)
在蓝色的情况下,minValidity
的值越大越合适。
我理解这是蓝色情况。
奖励问题:如果令牌持续时间小于 minValidity,会发生什么?
updateToken
将会在每次触发时刷新。 - Raymond Chenon