gpt4 book ai didi

angularjs - KEYCLOAK - 刷新/更新 token 不起作用

转载 作者:行者123 更新时间:2023-12-03 15:58:50 24 4
gpt4 key购买 nike

我有使用 Angularjs 构建的单页应用程序并与 Keycloak 集成为 认证授权 .

我能够登录我的应用程序,获得登录的用户 Angular 色等。刷新 token 调用的那一刻,它总是在我的其他情况下返回,并且用户注销应用程序。虽然 token 有效时间设置得非常高。

如果用户打开了应用程序,我需要更新 token 。如果失败或 token 过期,我需要注销用户。 if (refreshed)总是返回假。

下面是我正在使用的一段代码。

var __env = {};

Object.assign(__env, window.__env);

var keycloakConfig = {
"url" : __env.keycloakUrl,
"realm" : __env.keycloakRealm,
"clientId" : __env.keycloakClientId,
"credentials" : {
"secret" : __env.keycloakSecret
}
};
var keycloak = Keycloak(keycloakConfig);
keycloak.init({
onLoad : 'login-required'
}).success(function(authenticated) {
if(authenticated){
keycloak.loadUserInfo().success(function(userInfo) {
bootstrapAngular(keycloak, userInfo, roles);
});
}
});

function bootstrapAngular(keycloak, userInfo, roles) {
angular.module('myApp').run(
function($rootScope, $http, $interval, $cookies) {
var updateTokenInterval = $interval(function() {
// refresh token if it's valid for less then 15 minutes
keycloak.updateToken(15).success(
function(refreshed) {
if (refreshed) {
$cookies.put('X-Authorization-Token',
keycloak.token);
}else{
$rootScope.logoutApp();
}
});
}, 600000);
updateTokenInterval;
$cookies.put('X-Authorization-Token', keycloak.token);

$rootScope.logoutApp = function() {
$cookies.remove('X-Authorization-Token');
$interval.cancel(updateTokenInterval);
keycloak.logout();
};
}
}

最佳答案

我在 API 文档中找不到解释,但是 timeout keycloak.updateToken() 的论据函数表示为 ,不是在几分钟内。

因此,如果服务器上的访问 token 生命周期为默认值 5 分钟,则应使用小于 300 秒的值。
我通过一些实验了解到它。

//Update the token when will last less than 3 minutes
keycloak.updateToken(180)

顺便说一句,我建议您为 token 使用超过 5 分钟的 Lifespan。

在您的代码中,您永远不会看到 token 刷新,因为在 15 秒窗口中永远不会触发刷新。

关于angularjs - KEYCLOAK - 刷新/更新 token 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42499818/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com