在 AngularFireAuth 中获取当前用户

Pet*_*r S 5 firebase firebase-authentication angularfire2 google-cloud-firestore

如何获取登录用户?

我这样做: console.log('登录...'); this.afAuth.auth.signInWithEmailAndPassword(this.email, this.password);

但是文档并不清楚如何让用户进入代码。它们在模板中显示了一种方式,但我需要存储当前用户。

小智 6

AngularFireAuth.authState 是一个 Observable,所以你可以订阅它,然后获取用户实例:

  private user: firebase.User;

  constructor(public afAuth: AngularFireAuth) {
    afAuth.authState.subscribe(user => {
      this.user = user;
    });
  }
Run Code Online (Sandbox Code Playgroud)


小智 3

获取当前用户:

let user = AngularFireAuth.auth.currentUser;
// returns user object
Run Code Online (Sandbox Code Playgroud)

由于某种原因,每次页面刷新都会导致 currentUser 消失,并且我将用户 ID (UID) 存储在本地存储中,因此我能够记住用户并稍后引用 Firestore:

localStorage.setItem('userUID', user.uid);
// ...
let userID = localStorage.getItem('userUID');
AngularFirestore.firestore.collection('users')
      .doc(userID)
      // ...
Run Code Online (Sandbox Code Playgroud)

注销时,您只需注销用户并删除本地存储值:

logout() {
   AngularFireAuth.auth.signOut().then(() => {
      localStorage.removeItem('userUID');
   };
}
Run Code Online (Sandbox Code Playgroud)