Firebase:允许对不同集合进行读或写访问
我的项目有两个主要收藏:“联系人”和“相册” 这是我的 我试图为“albums”集合中的每个人分配完全读取权限,并将写入权限限制为未经验证的用户。 同时,我希望为未经身份验证的用户分配写访问权限,并为“联系人”集合中经过身份验证的用户分配读、更新和删除权限 对于已验证的请求和未验证的请求,当前规则集在规则模拟器中均失败。规则如下:Firebase:允许对不同集合进行读或写访问,firebase,google-cloud-firestore,firebase-security,Firebase,Google Cloud Firestore,Firebase Security,我的项目有两个主要收藏:“联系人”和“相册” 这是我的 我试图为“albums”集合中的每个人分配完全读取权限,并将写入权限限制为未经验证的用户。 同时,我希望为未经身份验证的用户分配写访问权限,并为“联系人”集合中经过身份验证的用户分配读、更新和删除权限 对于已验证的请求和未验证的请求,当前规则集在规则模拟器中均失败。规则如下: rules_version = '2'; service cloud.firestore { match /databases/{database}/docume
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /contact/{document=**} {
allow create;
allow read, update, delete: if request.auth != null;
}
}
match /albums/{document=**}{
allow read;
allow write: if request.auth != null;
}
}
firebase查询返回“onSnapshot中的未捕获错误:FirebaseError:缺少或权限不足”
查询如下:
useEffect(() => {
const unmount = firestore
.collection("albums")
.orderBy("date", "asc")
.onSnapshot((snapshot) => {
const tempAlbums = [];
snapshot.forEach((doc) => {
tempAlbums.push({ ...doc.data(), id: doc.id });
});
setAlbums(tempAlbums);
});
return unmount;
}, []);
关于如何纠正规则有什么想法吗?您的规则中有一个输入错误。应该是这样的:
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /contact/{document=**} {
allow create;
allow read, update, delete: if request.auth != null;
} //The /albums path must be included inside /documents
match /albums/{document=**}{
allow read;
allow write: if request.auth != null;
}
}
}
谢谢你的回答!查询现在可以工作,但规则集在规则模拟器中失败,可能它们有问题,这就是为什么我总是收到Firestore数据库未正确保护的警报。@AlexandruLupu这些规则在模拟器中失败,因为您没有为
/albums
和/contact
之外的任何内容设置任何规则,因此,如果你在应用程序中没有使用任何不同的路径,你可以忽略这些警报