如果在allowedUsers
中找不到他们的电子邮件,我需要阻止用户身份验证。它并没有真正影响应用程序,因为所有操作都将在users
列表中执行,但如果身份验证没有发生,那将会很好。
loginWithGoogle() {
const userDetails = this.afAuth.auth.signInWithPopup(new firebase.auth.GoogleAuthProvider())
.then(user => {
console.log(user.user.uid);
const queryObservable = this.db.list('/allowedUsers', {
query: {
orderByChild: 'email',
equalTo: user.user.email,
}
}).subscribe(data => {
if (data.length > 0) {
const userObj = {
admin: false,
...
email: data[0].email,
name: data[0].name,
verified: false,
};
this.addUser(userObj, user.user.uid);
}
});
});
return userDetails;
}
答案 0 :(得分:1)
无法阻止用户使用Firebase身份验证进行身份验证。他们在进行身份验证时所做的就是说"我是X Yz"并证明它。
可以做的是阻止他们有权访问您的数据库。例如,仅允许列入白名单的用户对您的数据库进行读访问:
{
"rules": {
".read": "root.child('allowedUsers').child(auth.uid).exists()"
}
}
另见: