【发布时间】:2020-08-20 15:22:54
【问题描述】:
我想允许经过身份验证的读/写匹配/users/{userid}/{document=**},即/users/userid 下的所有文档,除了 为/users/{userid}/account-info/{document=**},这是仅限管理员的特权区域。这可能吗?
【问题讨论】:
标签: firebase google-cloud-firestore firebase-security
我想允许经过身份验证的读/写匹配/users/{userid}/{document=**},即/users/userid 下的所有文档,除了 为/users/{userid}/account-info/{document=**},这是仅限管理员的特权区域。这可能吗?
【问题讨论】:
标签: firebase google-cloud-firestore firebase-security
当您使用诸如/users/{userid}/{document=**} 之类的通配符来提供对文档层次结构的访问时,不可能使用另一条规则拒绝对其中一个文档的访问。使用安全规则,如果 any 规则允许访问文档,则该访问是永久的并且不能被覆盖。我建议阅读overlapping match statements 上的文档。
如果您想禁止访问一个名为“account-info”的子集合,那么您将不得不编写规则以仅允许访问其他每个子集合,并完全省略“account-info”。
您可能还需要考虑将子集合分为“公共”和“私有”组,以便更轻松地应用不同的规则。例如:
/users-public/{userid}/{document=**}
/users-private/{userid}/{document=**}
然后根据它们的顶级集合编写规则以不同方式保护它们。
【讨论】: