firebase对特定字段的读/写规则

时间:2017-06-27 22:45:42

标签: firebase firebase-realtime-database firebase-security

如果我有一个包含以下字段的数据库:

env

有相当多的帖子显示了如何允许用户允许访问其数据,或允许管理员访问其他人的数据,包括他们自己的数据。

问题是,如何限制firebase安全规则中的数据以允许说“'员工”。只写名称,电子邮件和电话,而管理员可以写入所有字段,包括位置和付款。

例如,如果我是一名员工并且我知道firebase,那么阻止我注入新款以支付'这样我可以改变金额?即使认为该字段可能无法显示,我也可以写入我的整个记录​​。我想限制对某些字段的写访问权限。这可能吗?

我的猜测是列出每个字段,例如:

name
email
phone
position
pay

或使用.validate,但我不确定?

1 个答案:

答案 0 :(得分:4)

假设所有这些用户都在一些称为用户的子项下,并且每个用户的个人资料都有一个auth.uid的密钥,您可以创建一个规则,如果用户的位置列为admin$user_id是他们自己的用户ID。这样管理员可以写任何人的名字,用户可以写自己的名字。同样,对于pay孩子,只有position等于admin的用户才能写入pay。这可能看起来像这样:

{
    "users": {
        "$user_id": {
            "name": {
                ".write": "root.child('users/'+auth.uid+'/position') == 'admin' || $user_id == auth.uid"
            },
            "pay": {
                ".write": "root.child('users/'+auth.uid+'/position') == 'admin'"
            }

        }
    }
}

您只需要为emailphoneposition添加规则。