我正在使用Firebase Cloud Firestore,我想修改我的规则以限制用户查询集合.
这不应该被允许:
firestore().collection("users").get()
Run Code Online (Sandbox Code Playgroud)
但是应该允许这样做:
firestore().collection("users").doc("someUserId").get()
Run Code Online (Sandbox Code Playgroud)
目前,我的规则如下:
match /users/{userId} {
allow read;
}
Run Code Online (Sandbox Code Playgroud)
但是此规则允许查询"用户"集合.
如何允许单个文档获取,但不允许收集查询?
javascript firebase google-cloud-firestore firebase-security-rules
我想让用户有权更新文档.但仅限用户更新此文档的一个特定字段.此用户不应更改所有其他字段.
这可能在火店吗?
我试过这样的事情:
function isUpdateToOpenField(attr) {
return attr == get(/databases/$(database)/documents/stores/$(store)).data.open;
}
allow update: if isUpdateToOpenField(request.resource.data);
Run Code Online (Sandbox Code Playgroud)
但我不知道如何比较更新是否对应于正确的字段.
firebase-security google-cloud-firestore firebase-security-rules
在我的company文档中,我有一个名为 的引用字段owner,它指向一个user文档。在规则中,我试图检查经过身份验证的 uid 是否是公司的所有者:
match /companies/{companyId} {
allow read: if isOwner(resource.data.owner, request.auth.uid);
}
function isOwner(owner, userId) {
return path('/users/' + userId) == owner;
}
Run Code Online (Sandbox Code Playgroud)
我尝试了很多东西,但无法弄清楚如何使这项工作发挥作用。
(我知道使用字符串而不是引用有效,但我更愿意使用引用)