首页 > 解决方案 > isAuthenticated 调用上的角度刷新访问令牌

问题描述

我正在尝试jwt使用refresh token. 我有这个方法在我的authenticationService

isAuthenticated(): boolean {
  const jwtHelper = new JwtHelperService();
  return !jwtHelper.isTokenExpired(this.getAccessToken());
}

我想像这样使用它:

isAuthenticated(): Observable<boolean> {
  const jwtHelper = new JwtHelperService();
  if (!jwtHelper.isTokenExpired(this.getAccessToken())) {
    return of(true);
  }
  return this.refreshToken(); // returns Observable<boolean>
}

因此,我希望始终拥有有效的访问令牌,而不是在每次 api 调用时刷新它(这可能更好),因为*ngIf如果用户未登录,我会使用它来不显示某些组件。那么,如何进行一次调用refreshToken所有来电isAuthenticated

标签: angularrxjs

解决方案


所以,我决定使用这篇文章中的 flow 。我添加了app initialzer(调用refreshToken)并替换isAuthenticated

isAuthenticated(): boolean {
  return this.gerUserData() != null;
}

我认为这个流程更好,因为如果没有带有有效负载的 api 调用,每次过期时刷新令牌都是无用的。


推荐阅读