【问题标题】:angular2-jwt using tokenNotExpired() in Promise/Observable?angular2-jwt 在 Promise/Observable 中使用 tokenNotExpired()?
【发布时间】: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


    【解决方案1】:

    取一个 boolean 类型变量并使用 ** isAuthenticated()** 函数检查它。

    【讨论】:

    • 我不明白
    • 创建一个布尔数据类型的变量并用函数检查。意思是,检查类型是假的还是真的。您在此处使用该函数作为布尔值。而不是函数使用变量。并且内部函数通过检查返回变量值
    • 我应该在哪里创建一个布尔变量并检查哪个函数?你的意思是let isAuthenticated: boolean = tokenNotExpired() 之类的东西?在哪个函数里面?
    猜你喜欢
    • 1970-01-01
    • 2016-08-07
    • 1970-01-01
    • 1970-01-01
    • 2017-03-15
    • 2021-01-04
    • 2019-07-10
    • 2018-10-18
    相关资源
    最近更新 更多