每次用户注册时,以下代码都是超值的:
this.router.navigate(['/']);
firebase.auth().currentUser.getToken()
.then(
(token: string) => this.token = token
)getToken方法的定义如下:
getToken() {
firebase.auth().currentUser.getToken()
.then(
(token: string) => this.token = token
);
return this.token;
}我保存令牌是因为我有一个路由保护器,用于检查用户是否有令牌:
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {
return this.authService.isAuthenticated();
}现在,我刚刚阅读了Firebase的文档,这是使用onAuthStateChanged()检查用户是否已登录的一种良好实践:
firebase.auth().onAuthStateChanged(function(user) {
if (user) {
// User is signed in.
} else {
// No user is signed in.
}
});那么,在应用程序中使用角+ Firebase来定义(有效)用户的最佳方法是什么?
发布于 2018-02-13 21:53:37
我使用这个函数来检查用户是否登录(使用angularfire2,这是一种很大的帮助,因为它为您提供了指向firebase https://github.com/angular/angularfire2的包装器):
isLoggedIn(){
var promise = new Promise((resolve, reject) => {
this.afAuth.authState.subscribe(res => {
if (res && res.uid) {
console.log('user is logged in');
resolve(true);
} else {
console.log('user not logged in');
resolve(false);
}
});
});
return promise;
}以下是如何使用该函数:
this.auth.isLoggedIn().then(
(val) => {
if(val){
//Do your re-direct
}else{
//send alert or something
}
}
);https://stackoverflow.com/questions/48775760
复制相似问题