小编Zac*_*Zac的帖子

Firebase的"规则不是过滤器"约束的解决方法

我想要一个安全规则,允许任何人获取用户列表并阅读他们的名字,但只允许登录用户查看他们自己的电子邮件.

这是一个示例数据结构:

    "User" : {
        "abc123" : {
          "name" : "Bob",
          "email" : "bob@hotmail.com"
        }   
    }
Run Code Online (Sandbox Code Playgroud)

安全规则的简单方法可能是执行以下操作:

"User" : {
    "$user" : {
        "name" : {
            ".read" : true
        },
        "email" : {
            ".read” : "auth.uid === $user"
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,由于用户级别没有读取规则,因此将拒绝读取列表的请求.但是,在用户级别添加读取规则将覆盖电子邮件规则,并使每个子节点都可读(请参阅Firebase安全指南中的规则级联).

安全指南确实指出规则不是过滤器,但没有提供关于如何处理它的很多指导.

我应该将我的用户实体拆分为PrivateUser和PublicUser吗?

firebase firebase-security firebase-realtime-database

10
推荐指数
1
解决办法
1032
查看次数