refre sh токен брелок js - PullRequest
       0

refre sh токен брелок js

0 голосов
/ 30 января 2020

Я работаю с keycloak- js версия 8.0.1, у меня есть функция getToken, которая проверяет, истек ли токен, в этом случае он обновляет его, или токен не истек, поэтому он возвращает его. Проблема в том, что по истечении срока действия токена отображается предупреждающее сообщение, но оно не изменяется

TokenService

@Injectable()
export class TokenService {

static auth: any = {};

constructor() { }

 static init(): Promise<any> {
    const keycloakAuth: Keycloak.KeycloakInstance = Keycloak({
        url: config.keycloak.url,
        realm: config.keycloak.realm,
        clientId: config.keycloak.clientId
    });
    return new Promise((resolve, reject) => {
        keycloakAuth.init({ onLoad: 'check-sso', flow: 'implicit', checkLoginIframe: false }).success(() => {
            TokenService.auth.authz = keycloakAuth;
            resolve();
        }).error(() => {
            reject();
        });
    });
 }

 getToken(): Promise<string> {
    return new Promise<string>((resolve, reject) => {
        if (TokenService.auth.authz.isTokenExpired()) {
             console.warn("Token expired !");
            TokenService.auth.authz.updateToken(1800).success(() => {
                console.log("Token updated");
                resolve(<string>TokenService.auth.authz.token);
            }).error(() => {
                reject('Failed to refresh token');
            });
        } else {
            resolve(<string>TokenService.auth.authz.token);
        }
    });
 }
}

1 Ответ

0 голосов
/ 31 января 2020

Я думаю, что проблема может быть в функции TokenService.auth.authz.updateToken(1800), это означает (если я правильно понимаю), если срок действия токена истекает в течение 1800 секунд, тогда выполните refre sh токен.

В В вашем случае токен уже истек, поэтому функция ничего не делает. Я предлагаю не проверять isExpired (), а делать что-то напрямую

getToken(): Promise<string> {
    return new Promise<string>((resolve, reject) => {
        TokenService.auth.authz.updateToken(100).success(() => {
                console.log("Token updated");
                resolve(<string>TokenService.auth.authz.token);
            }).error(() => {
                reject('Failed to refresh token');
            });
        resolve(<string>TokenService.auth.authz.token);
    });
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...