我有一個使用Angularjs
建立與Keycloak
集成了認證和授權單頁的應用程序。KEYCLOAK - 刷新/更新令牌不工作
我能夠登錄到我的應用程序,獲取登錄用戶角色等去瞬間刷新令牌調用,它總是返回我的情況下,和用戶註銷的應用程序。雖然令牌有效時間設置得非常高。
如果用戶打開了應用程序,我需要更新令牌。如果失敗或過期令牌,我需要註銷用戶。 if (refreshed)
總是返回false。
下面是我使用的一段代碼。
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();
};
}
}
有類似的問題,你找到了解決方案? – Atropo