Mat*_*att 1 firebase firebase-security firebase-realtime-database
如果我有一个包含以下字段的数据库:
name
email
phone
position
pay
Run Code Online (Sandbox Code Playgroud)
有大量帖子展示了如何允许用户访问他们的数据,或允许管理员访问其他人的数据,包括他们自己的数据。
问题是,您如何限制 firebase 安全规则中的数据,以允许“员工”仅写入姓名、电子邮件和电话,而管理员可以写入所有字段,包括职位和薪酬。
例如,如果我是一名员工并且我知道 firebase,有什么可以阻止我为“支付”注入新的金额以便我可以更改金额?即使认为该字段可能不会显示,我也会对我的整个记录进行写访问。我想限制对某些字段的写访问。这可能吗?
我的猜测是列出每个字段,例如:
{
"name": ".write...",
"email: ".write...", etc etc
}
Run Code Online (Sandbox Code Playgroud)
或使用 .validate,但我不确定?
假设所有这些用户都在一些名为 users 的子项下,并且每个用户的个人资料都有一个键,即他们的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'"
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
你只需要添加规则email,phone和position。
| 归档时间: |
|
| 查看次数: |
2736 次 |
| 最近记录: |