2017-05-29 28 views
1

我有與Angular js應用程序的春季啓動後端應用程序。登錄過程和初始後端通信成功。空閒一段時間後,前端將顯示403禁止,後端控制檯上的令牌不活動。Keycloak令牌不與angularjs活動

下面的代碼包含刷新令牌,但它似乎不工作。

// use bearer token when calling backend 
themesApp.config(['$httpProvider', function($httpProvider) { 
    var isExpired = keycloak.isTokenExpired(); 
    var token = keycloak.token; 

    if (isExpired) { 
    keycloak.updateToken(5) 
    .success(function() { 
     $httpProvider.defaults.headers.common['Authorization'] = 'BEARER ' + token; 
    }) 
    .error(function() { 
     console.error('Failed to refresh token'); 
    }); 
    } 

    $httpProvider.defaults.headers.common['Authorization'] = 'BEARER ' + token; 
}]); 

錯誤的後端

2017-05-29 10:08:23.715 ERROR 5072 --- [nio-8080-exec-3] o.k.a.BearerTokenRequestAuthenticator : Failed to verify token 

org.keycloak.common.VerificationException: Token is not active 

回答

0

一定出事了Keycloak服務器上,令牌不活躍意味着令牌而過期或使用它變得有效了。 KC服務器上的時間/日期可能是錯誤的嗎?

+0

是的,我檢查了keycloak服務器和客戶端。他們似乎在正確的時區。 – boycod3

0

您可以配置的「會話空閒時間」在這裏:

enter image description here

我有同樣的問題,並建立一條自動註銷處理。所以用戶必須重新登錄。

0

在您的代碼:

var token = keycloak.token; 

你一旦定義標記的值。更新後,你必須重新設置它:

// use bearer token when calling backend 
themesApp.config(['$httpProvider', function($httpProvider) { 
    var isExpired = keycloak.isTokenExpired(); 
    var token = keycloak.token; 

    if (isExpired) { 
    keycloak.updateToken(5) 
    .success(function() { 

    // UPDATE THE TOKEN 
    token = keycloak.token; 

    $httpProvider.defaults.headers.common['Authorization'] = 'BEARER ' +  token; 
    }) 
.error(function() { 
    console.error('Failed to refresh token'); 
}); 
} 

$httpProvider.defaults.headers.common['Authorization'] = 'BEARER ' + token; 
}]); 
相關問題