我在编写Firebase权限时遇到麻烦。我希望那些经过身份验证的用户仅写入用户部分,而其他所有人都应该能够读取或写入数据库的任何部分。有什么方法可以定义每个表的规则,默认为true并仅限制要验证的用户部分,或者我必须为每个表显式编写规则。
PS。如果有人可以指导我,我应该为具有以下结构的应用程序执行哪些规则来发送和接收消息,那就太好了
聊天
朋友
-用户
-message_notifications
消息
-通知
/* Visit https://firebase.google.com/docs/database/security to learn more about security rules. */
"rules": {
"Users":{
"$uid":{
".read": true,
".write": "auth.uid == $uid"
}
}
}
}
答案 0 :(得分:1)
有什么方法可以为每个表定义规则(默认为true),并限制仅对用户节进行身份验证?
一旦用户可以访问数据库中某个级别的数据,他们就可以访问该级别下的所有数据。您不能在较低级别上撤消此权限。因此,无法让用户访问根目录下的所有数据,然后排除一个节点。
您可以 做的是使用$
通配符规则创建两种类型的顶级节点:
{
"rules": {
"Users":{
"$uid":{
".read": true,
".write": "auth.uid == $uid"
}
},
"$others": {
".read": true,
".write": true
}
}
}
根据上述规则,用户可以:
/Users/$uid
节点。/Users/$uid
节点。