我在我的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;
}
}
流量:用戶登錄時,用戶嘗試訪問受保護的路由,AuthGuard檢查是否用戶經由isAuthenticated登錄()。
注意:我不想驗證用戶的完整的Angular應用程序。僅限於某些路線。
問題
在用戶登錄後,用戶被重定向到角應用程式。在此之後,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查看代碼,它是一個集成Keycloak的Angular 2庫,可提供更完整的功能集。免責聲明:我是作者,你可以給我反饋;-) –