控制台中的Angular 4/5 Firebase当前用户在刷新时消失

时间:2018-01-16 19:13:41

标签: angular firebase firebase-authentication angular5

我使用Firebase构建了Angular 5登录,并通过以下方式在控制台中记录了当前用户。 它工作正常,也可以通过路由加载另一页。但是当我重新加载页面时,auth对象消失 - 但用户保持登录状态(home component.html中的用户名,例如保持显示)

登录Component.ts

  onLoginEmail(): void {
if (this.validateForm(this.email, this.password)) {
  this.authService.loginWithEmail(this.email, this.password)
    .then(() => this.router.navigate(['/home']))
    .catch(_error => {
      this.error = _error
      this.router.navigate(['/'])
    })
}

}

auth.service.ts

  loginWithEmail(email: string, password: string) {
return this.afAuth.auth.signInWithEmailAndPassword(email, password)
  .then((user) => {
    this.authState = user
    this.isLoggedIn()
  })
  .catch(error => {
    console.log(error)
    throw error
  });

}

isLoggedIn() {
    this.afAuth.auth.onAuthStateChanged(auth => {
      if (auth) {
        console.log(auth);
      } else {
        console.log('User logged out');
      }
    });
  }

(这是一种常见的方式吗?有更好的方法吗?)

1 个答案:

答案 0 :(得分:1)

auth状态将是持久的,因此刷新页面和仍然登录的同一用户是正常的。听起来你的问题是当你刷新页面时,无论是什么代码将用户打印到控制台没有被调用。函数isLoggedIn不应该从signInWithEmailAndPassword()返回的promise中调用,这实际上没有意义。如果signInWithEmailAndPassword()成功,onAuthStateChanged将发出一个新值,因此您应该在尝试登录用户之前调用isLoggedIn()。