在我的应用程序中,我希望拥有适用于所有路径的全局安全规则,如果这些规则失败,则应拒绝请求,如果它们通过,则遵循检查下一级定义的下一组规则。就文档而言,如果有多个匹配项,则它们是 OR 条件,因此只要其中一个返回 true 则授予权限。有没有办法让条件 AND 而不是 OR ?
目前我正在每个级别定义函数,并确保从任何内部匹配中调用它们,虽然它有效,但管理规则变得非常烦人。
-----编辑------
这是我想要实现的示例。 当用户尝试阅读文档时,有全局阅读规则,例如
function globalGetRules(){return request.auth != null && resource.data.deleted != true;}
然后每个集合可能有额外的规则来应用,例如
function someResourceGetRules(){return resource.data.draft != true || resource.data.owner == request.auth.uid;}
那么我所做的就是为了那个资源
allow get: if globalGetRules() && someResourceGetRules();
我正在寻找的是一种在所有资源上强制使用 globalGetRules 的方法,然后在它通过后,应该验证 someResourceGetRules,它也可以嵌套(未来计划,目前只有 1 个级别)