我希望允许经过身份验证的读/写与/users/{userid}/{document=**}
相匹配,即/users/userid
下的所有文档,除了的/users/{userid}/account-info/{document=**}
,后者是仅适用于管理员的特权区域。这可能吗?
当您使用像/users/{userid}/{document=**}
这样的通配符来提供对文档层次结构的访问时,不可能使用其他规则来拒绝对其中一个文档的访问。对于安全规则,如果任何规则都允许访问文档,则该访问是永久性的,不能被覆盖。我建议阅读关于重叠匹配语句的文档。
如果您想禁止访问名为"的子集合;账户信息";,那么您将不得不编写规则,只允许访问其他每个子集合,并省略";账户信息";总共
您可能还想考虑将子集合分组为";"公共";以及";私人的";分组,以便更容易应用不同的规则。例如:
/users-public/{userid}/{document=**}
/users-private/{userid}/{document=**}
然后根据它们的顶级集合编写不同的规则来保护它们。