【问题标题】:Angular 6 problem with checking localstorage on app init在应用程序初始化时检查本地存储的 Angular 6 问题
【发布时间】:2018-10-29 21:14:26
【问题描述】:

如果用户登录应用程序或没有登录,我在检查页面加载时遇到问题。我尝试使用 eventEmmiter 和 Subject ,但在加载时没有检查本地存储的结果。

这是我的身份验证服务

export class AuthenticationService {
  constructor() {
  }
  // here is bunch of code

  isLoggedIn(): boolean {
    let currentUser = localStorage.getItem('currentUser');
    return !!(currentUser);
  }

}

这是我的 HedaerComponent:

constructor(private authenticationService: AuthenticationService) {
 this.checkUser();
}

checkUser() {
 if (this.authenticationService.isLoggedIn()) {
 // do something
 }
 else {
 // do something
 }
}

我在首次加载应用时遇到问题,如何检查用户是否登录?当我伤心时,我尝试发出价值但没有结果。感谢您的帮助!

【问题讨论】:

  • 这应该可以。如果没有,请提供minimal reproducible example 重现该问题。
  • 访问此标头组件的位置。在索引中,html?

标签: javascript angular authentication local-storage angular6


【解决方案1】:

您可以使用 Angular 的路由保护来实现这一点。这里有一些教程:

  1. https://ryanchenkie.com/angular-authentication-using-route-guards

  2. https://angular.io/guide/router#milestone-5-route-guards

【讨论】:

  • 不是答案,而是有用的建议。
【解决方案2】:

应该有帮助

 let currentUser = JSON.parse(localStorage.getItem('currentUser'));

【讨论】:

    【解决方案3】:

    我通过添加新服务解决了我的问题,这里是示例

    import { Subject } from 'rxjs';
    
    class CustomEventEmitter extends Subject<any>{
     constructor() {
        super();
     }
     emit(value: any) {
        super.next(value);
     }
    }
    
    export class PubSubService {
     Stream: CustomEventEmitter;
     constructor() {
        this.Stream = new CustomEventEmitter;
     }
    }
    

    感谢您的帮助!

    【讨论】:

      猜你喜欢
      • 2014-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-26
      • 2018-12-11
      • 1970-01-01
      • 1970-01-01
      • 2016-06-28
      相关资源
      最近更新 更多