簡體   English   中英

Keyjloak令牌對於angularjs不起作用

[英]Keycloak token not active with angularjs

我有Angular js應用程序的spring boot后端應用程序。 登錄過程和初始后端通信成功。 在一些空閑時間之后,前端將顯示403禁止,后端控制台上的令牌未激活。

下面的代碼包含刷新令牌,但它似乎無法正常工作。

// 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

Keycloak Server上的某些內容必定是錯誤的, Token not active意味着令牌已過期或在其生效之前使用。 可能是你的KC服務器上的時間/日期錯了嗎?

你可以在這里配置'Session Idle Time':

在此輸入圖像描述

我有同樣的問題,並通過自動注銷處理它。 因此用戶必須再次登錄。

在你的代碼中:

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;
}]);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM