我希望我的应用用户可以访问通过实时数据库查看的其他用户的个人资料。我通过
引用db ref.once('users/'+uid, snapshot => snapshot.child('users/'+uid).val())
我拥有的规则:
{
"rules": {
"users": {
".read": true,
"$uid": {
".write": "$uid === auth.uid"
},
},
}
我不明白为什么我无法访问users/:uid
,即使模拟器通过勾选success
并在read
上运行模拟来提供<firebaseURL>/users
消息。
如果我在".read": true"
下设置rules
,它确实允许我读取数据,但如果我想要实现我不希望可用的内容,这可能会引起我的注意未经授权的用户。
编辑(解决方案):
问题在于引用firebase。而不是firebase.database.ref('users')
我通过firebase.database.ref()
引用了root本身。
该引用导致应用默认read/write
规则。
答案 0 :(得分:1)
您可以".read": "auth != null"
允许所有授权用户读取users
对象下的数据,并防止未经授权的用户阅读。