我在我的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库,可提供更完整的功能集。免责声明:我是作者,你可以给我反馈;-) –