我是Firebase的新手。我对Firebase安全规则有疑问。我可以将数据写入Firebase数据库,但是无法读取写入的数据。 我的数据库看起来像-
user|
|_uid(auto-generated)
|
|_name:Bob
|_score:100
|_email:bob@gmail.com
我的firebase数据库规则看起来像-
"user":{
"$uid":{
"uname":{
".read":"$uid=== auth.uid",
".write":"$uid=== auth.uid"
},
"score":{
".read":"$uid=== auth.uid",
".write":false
},
"email":{
".read":"$uid=== auth.uid",
".write":"$uid=== auth.uid"
}
}}
我已经用模拟器进行了测试,一切(读取和写入)均正常。但是,即使我登录了帐户,也无法从我的应用程序读取信息。 当我将所有读写都设置为真正的上层 $ uid 节点时,所有来自我的应用程序的读写也可以。但是我只允许读给授权人
我已经搜索过stackoverflow,但是对此没有解决方案。
对不起,我的英语写作能力。
答案 0 :(得分:0)
在使用实时数据库时,处理此问题的最佳方法是创建一个docker ps --filter "ancestor=postgres" -q
,然后将所有授权的uid保存在此子级中,然后按如下所示设置规则:“规则”:
-q
答案 1 :(得分:0)
如果在用户节点内部创建uid时使用了push(),则authid和uid不相同。它们具有不同的值。请确保您使用了与
相同的UID firebaseauth.getinstance().getcurrentuser().getuid()
如果您想授权人们只对他们的数据做某事,可以使用以下规则。
{
"rules": {
"user": {
"$uid": {
".read": "$uid === auth.uid",
".write": "$uid === auth.uid"
}
}
}
}
您拥有的节点是名称,但是规则上指示的级别是未知的...