私はAngular 2プロジェクトでKeycloak認証サービスを実装しています。 私はログイン、ログアウトなどのためにサービスを利用しています。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;
}
}
フロー:ユーザーがログインするユーザーがにisAuthenticated()経由でログインした場合、ユーザーは、保護されたルートに到達するためにAuthGuardチェックをしようとします。
注:完全な角度アプリのユーザーを認証したくありません。一部のルートのみ。
問題
ユーザーがログインした後、ユーザーが角度のアプリにリダイレクトされます。その後、isAuthenticated()メソッドはまだfalseを返します。理由は次のとおりです。
コンソールにKeycloakオブジェクトを記録しました。私は理解できなかったことを見つけました。ログイン後
Keycloakオブジェクトと同じKeycloakログインリダイレクト後のオブジェクト(ただし拡大)
をリダイレクト
まず、認証プロパティがfalseです。展開後、認証されたプロパティはtrueです。
質問
は、私は私の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
Keycloakを統合し、より完全な機能セットを提供するAngular 2ライブラリがある場合は、https://github.com/atende/angular-spaのコードを確認することもできます。免責事項:私は著者です、あなたは私にフィードバックを送ることができます;-) –