【发布时间】:2017-07-29 05:53:01
【问题描述】:
我在我的 Angular 2 应用程序中获得了一个 AuthService,它提供了以下公共方法:
public isAuthenticated(): boolean {
/* check if id_token is expired or not */
return tokenNotExpired();
}
在模板中,我可以检查用户是否通过了身份验证
<button [routerLink]="['/signup']"
*ngIf="!auth.isAuthenticated()">
Sign Up
</button>
我的问题是,如果用户已注销,这可以正常工作。如果用户导航到路由“/signup”并登录auth0.client.login() 运行并登录用户。模板注意到由于角度变化检测而发生的变化?! 到目前为止工作正常。
但是,如果我在另一个在某些组件中调用的 AuthService 方法中使用函数 isAuthenticated():
public isAuthorized(): Promise<boolean> {
return new Promise(resolve => {
if(!this.isAuthenticated()) {
resolve(false);
}
... further logic
}
}
此函数不知道“登录”更改。或者换一种方式需要更新,因为 isAuthenticated 现在更改为在登录前返回true 而不是false。
在组件中,我需要“观察”isAuthenticated() 状态并在 isAuthorized() 发生变化时再次运行它。我怎样才能让它工作?
一个例子会很棒,因为我从几个小时就开始尝试让它工作。
【问题讨论】:
标签: angular jwt observable