Я реализую службу аутентификации Keycloak в своем проекте Angular 2. Я использую услугу для входа в систему, выхода из системы и т. Д.Keycloak Angular 2 - Проверка подлинности статуса Объект Keycloak
Аутентификация пользователя и выход из системы, похоже, сработают. Теперь я пытаюсь защитить некоторые маршруты. У меня теперь есть работающий AuthGuard. Чтобы проверить, вошел ли пользователь в систему (в AuthGuard), у меня есть метод isAuthenticated() в службе. Это услуга:
import { Injectable } from '@angular/core';
declare let Keycloak: any;
@Injectable()
export class KeycloakService {
private keycloak = new Keycloak('app/keycloak/keycloak.json');
constructor() {
this.keycloak.init({onload: 'check-sso'});
console.log(this.keycloak);
}
public login() {
this.keycloak.login();
}
public logout() {
this.keycloak.logout();
}
public isAuthenticated() {
return this.keycloak.authenticated;
}
}
Flow: Пользователь входит в систему, пользователь пытается достичь защищенного маршрута, AuthGuard проверки, если пользователь вошел в систему с помощью isAuthenticated().
Примечание: Я не хочу, чтобы аутентифицировать пользователя для полного Углового приложения. Только для некоторых маршрутов.
Проблема
После того, как пользователь входит в системе, пользователь перенаправляется на угловое приложение. После этого метод isAuthenticated() возвращает значение false. Вот почему:
Я зарегистрировал объект Keycloak на консоли. Я нашел то, что не понял.
Keycloak объекта после того, как перенаправить Войти
Тот же объект Keycloak после входа в систему перенаправления (но расширен)
Сначала аутентифицирован свойство является ложным. После расширения аутентифицированного свойства это правда.
Вопрос
ли способ, которым я стараюсь поддерживать мой Keycloak объект правильный путь?
Опрошенные источники
- https://keycloak.gitbooks.io/securing-client-applications-guide/content/v/2.5/topics/oidc/javascript-adapter.html
- https://github.com/keycloak/keycloak/tree/master/examples/demo-template/angular2-product-app/src/main/webapp/app
И другие
Спасибо за ответ.Самая большая проблема сейчас - когда возникает обновление страницы, создается новый объект Keycloak и мой статус теряется. – xDs
Привет, правильно ли я понял, что на ваш оригинальный вопрос был дан ответ? Если да, пожалуйста, примите ответ. Что касается вашей следующей задачи, я бы предложил новый вопрос. – hakamairi
Вы также можете проверить код в https://github.com/atende/angular-spa с помощью библиотеки Angular 2, которая объединяет Keycloak и предоставляет более полный набор функций. Отказ от ответственности: Я автор, вы можете отправить мне обратную связь ;-) –