在 AngularFireAuth 中获取当前用户
Grabbing the current user in AngularFireAuth
如何抓取登录用户?
我这样做:
console.log('Logging in...');
this.afAuth.auth.signInWithEmailAndPassword(this.email, this.password);
但是文档并不清楚如何在代码中获取用户。他们在模板中显示了一种方式,但我需要存储当前用户。
我想通了!
console.log('Logging in...');
this.afAuth.auth.signInWithEmailAndPassword(this.email, this.password).then((user) => {
this.user = this.afAuth.authState;
});
获取当前用户:
let user = AngularFireAuth.auth.currentUser;
// returns user object
出于某种原因,每次页面刷新都会导致 currentUser 消失,我将用户 ID (UID) 存储在本地存储中,因此我能够记住用户并稍后引用 Firestore:
localStorage.setItem('userUID', user.uid);
// ...
let userID = localStorage.getItem('userUID');
AngularFirestore.firestore.collection('users')
.doc(userID)
// ...
注销时,您只需注销用户并删除本地存储值:
logout() {
AngularFireAuth.auth.signOut().then(() => {
localStorage.removeItem('userUID');
};
}
AngularFireAuth.authState 是一个 Observable,所以你可以订阅它,然后获取用户实例:
private user: firebase.User;
constructor(public afAuth: AngularFireAuth) {
afAuth.authState.subscribe(user => {
this.user = user;
});
}
我在网上找到的解决方案,无论刷新页面都有效:
AngularFireAuth.authState.pipe(first()).toPromise();
https://fireship.io/snippets/check-if-current-user-exists-with-angularfire/
如何抓取登录用户?
我这样做: console.log('Logging in...'); this.afAuth.auth.signInWithEmailAndPassword(this.email, this.password);
但是文档并不清楚如何在代码中获取用户。他们在模板中显示了一种方式,但我需要存储当前用户。
我想通了!
console.log('Logging in...');
this.afAuth.auth.signInWithEmailAndPassword(this.email, this.password).then((user) => {
this.user = this.afAuth.authState;
});
获取当前用户:
let user = AngularFireAuth.auth.currentUser;
// returns user object
出于某种原因,每次页面刷新都会导致 currentUser 消失,我将用户 ID (UID) 存储在本地存储中,因此我能够记住用户并稍后引用 Firestore:
localStorage.setItem('userUID', user.uid);
// ...
let userID = localStorage.getItem('userUID');
AngularFirestore.firestore.collection('users')
.doc(userID)
// ...
注销时,您只需注销用户并删除本地存储值:
logout() {
AngularFireAuth.auth.signOut().then(() => {
localStorage.removeItem('userUID');
};
}
AngularFireAuth.authState 是一个 Observable,所以你可以订阅它,然后获取用户实例:
private user: firebase.User;
constructor(public afAuth: AngularFireAuth) {
afAuth.authState.subscribe(user => {
this.user = user;
});
}
我在网上找到的解决方案,无论刷新页面都有效:
AngularFireAuth.authState.pipe(first()).toPromise();
https://fireship.io/snippets/check-if-current-user-exists-with-angularfire/