火力地堡提供用于表示ID和动态子键通配符路径。例如,下面的规则中的$ uid是一个'通配符',它允许该节点中的参数引用父节点。
{
"rules": {
"users": {
"$uid": {
".write": "$uid === auth.uid"
}
}
}
}
在上例中,$ uid是/ users节点内每个用户节点的通配符路径。以下是每个节点如何扩展上述规则:
users
uid_0 <--------|
V
".write": "uid_0 === auth.uid" //only user with uid = uid_0 can write
uid_1
".write": "uid_1 === auth.uid" //only user with uid = uid_1 can write
uid_2
".write": "uid_2 === auth.uid" //only user with uid = uid_1 can write
您可以对此进行扩展以提供极大的灵活性。假设你想让一定数量的用户能够访问组节点。组规则可以是
"rules": {
"Groups": {
"$group_id" : {
".read": "root.child('Allowed_Users/' + auth.uid).val() === $group_id",
".write": "root.child('Allowed_Users/' + auth.uid).val() === $group_id"
}
}
这将每个组节点的访问权限限制为在Allowed_Users节点中指定的某个用户组。在火力地堡数据库中的数据可能看起来像:
Groups
group_0
//data
group_1
//data
Allowed_Users
uid_0: group_0
uid_1: group_0
是这个例子中,用户uid_0和uid_1能读/写group_0但不读/写GROUP_1
来源
2016-12-17 14:05:52
Jay
安置自己的规则文本请,没有图像以及你试图通过通配符完成的事情,因为可能有解决方案。 – Jay
@Jay,澄清更新! – Ahsan
我发布了一个奇妙的答案,但因为我突然忘记了如何阅读它是完全错误的问题。在那个笔记上......现在还不清楚问题的症结所在 - 大多数firebase规则使用占位符来引用封闭的父节点。也许你可以发布你当前的规则,并描述你在做什么。 – Jay