我希望仅 user2,user3才能查看来自DB的用户1的信息以及不用户4。
我知道我需要在JSON规则中做一些事情:
UIDUser2,UIDUser3 当User1允许通过该应用获得权限时,将替换为实际ID。
{
"rules": {
".read": "auth != null",
".write": "auth != null"
}
}
到目前为止我的编辑
{
"rules": {
"Users":{
"UIDHERE":{
".read": auth.uid ==??
}
}
}
}
如何完成规则?我想从Allowed
区域检索密钥到这里?
答案 0 :(得分:7)
因此,您只希望ID位于Allowed
节点的用户读取其他用户信息。正确?
如果是这样的话......这是规则。
"Users": {
"$uid": {
".read": "root.child('Users/Allowed/'+auth.uid).exists()"
}
}
<强> [增订] 强>
$uid
是$ variables的示例(您可以为其指定不同的名称,但必须以$开头),它会动态获取Users
位置下的键值。
例如:我给你的规则只允许Allowed
节点下的用户读取其他用户信息,但如果此用户是,则会阻止用户读取自己的信息不在Allowed
节点中。
如果你想添加它,你需要改变你的规则。
"Users": {
"$uid": {
".read": "$uid == auth.id || root.child('Users/Allowed/'+auth.uid).exists()"
}
}
=============================================== ==========================
在firebase规则中有predefined variables,例如now
,root
,auth
,data
,newData
和{{3} }。
如果规则结构中有$ location,则可以使用 在规则表达式中匹配$ variable以获取其名称 实际的孩子被读或写。所以假设我们想要给每一个人 用户对自己/用户/位置的读写访问权限。我们 可以使用:
从firebase文档$ variables
复制如果您想了解有关firebase安全规则的更多信息,请阅读以下部分。
https://firebase.google.com/docs/reference/security/database/#location
你的结构不太好。 Users
节点下的数据混乱。您不应该将Allowed
节点与userIds放在同一级别上。相反,如果您在allowedUsers
节点级别创建新节点(Users
)并在那里移动Allowed
数据会更好。
AllowedUsers
- userid2
- userid3
Users
- userid1
- userid2
- userid3
- userid4