所以我正在使用Firebase制作一个日历应用程序,而且我遇到了一些障碍.
我的数据库结构是这样的:
- calendar
- $year
- $month
- $day
- $uid
- name
- arrivalStatus
- users
- $uid
- name
- team
所以我想要做的是,同一个团队中的人必须能够阅读日历中彼此的条目.我已经设定了这样的规则:
{
"rules": {
"users": {
"$uid": {
".read": "auth != null && auth.uid == $uid",
".write": "auth != null && auth.uid == $uid"
}
},
"calendar": {
"$year":{
"$month":{
"$day":{
"$uid":{
".read": "auth != null &&
root.child('users/'+auth.uid+'/team').exists() &&
root.child('users/'+$uid+'/team').val() == root.child('users/'+auth.uid+'/team').val()",
".write": "auth != null && auth.uid == $uid"
}
}
}
}
}
}
}
但无论出于何种原因,当通过模拟运行时,无论您在哪个团队,都会批准该请求.我错过了一些明显的东西吗
编辑:
所以基本上我们假设这个数据集:
-firecalender
-calendar
-2016
-9
-30
-gsdfgd
-Name: "MG"
-Status:"PM"
-users
-abcd
-name: "Tester"
-team: "bc"
-efg
-name: "noteam"
-team: "funny inc"
-gsdfgd
-name: "bossman"
-team : "bc"
在这种情况下,abcd应该能够读取Calendar中的每个gsdfgd信息,但是应该拒绝efg访问.
最佳答案 我认为你的问题是你正在使用==而不是===.
链接示例:https://firebase.google.com/docs/database/security/user-security