基本上,我正在设计一个Angular 7应用程序,每个用户都可以在其中读取和写入 firestore 中的内容,为此我在AngularFire2中引用了他们的官方文档。因此,我需要以这样一种方式获取数据,即每当用户进入我的应用程序时,他/她都应该已经过身份验证,然后才能访问云 Firestore 数据。我可以这样做:
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if request.auth.uid != null;
}
}
}
目前我正在使用signInWithEmailAndPassword()and进行身份验证GoogleAuthProvider()。
doGoogleLogin() {
return new Promise<any>((resolve, reject) => {
const provider = new firebase.auth.GoogleAuthProvider();
provider.addScope('profile');
provider.addScope('email');
this.afAuth.auth
.signInWithPopup(provider)
.then(res => {
resolve(res);
}, err => {
console.log(err);
reject(err);
});
});
}
doLogin(value) {
return new Promise<any>((resolve, reject) => {
firebase.auth().signInWithEmailAndPassword(value.email, value.password)
.then(res => {
resolve(res);
console.log(this.afAuth);
}, err => reject(err));
});
}
我想要的是授予用户访问权限databaseURL,projectId这些用户未包含在我的 firebase 控制台中的用户列表中,但已经通过浏览器中的电子邮件登录。尽管我可以通过这些方法进行身份验证,但我知道这听起来可能有点奇怪,但限制是控制台中的用户数量最多为 500。所以主要的是我可以获取并使用该会话令牌并将其发送到 Firebase 以获取数据吗?
我已经尝试以不同的方式定义规则,但它们似乎都不起作用。我还继续查看是否可以仅向我的域的用户提供访问权限,但显然这不是它的工作方式,因为垃圾邮件用户可以发送相同的参数,因此主要目的被破坏了。如果您需要更清楚的问题,请询问。感谢您的帮助和时间。和平。