2017-10-12 26 views
0

阅读大量教程和StackOverflow上的问题,我还是想不出该怎么做了。 所有教程先从以下规则:火力地堡规则,允许新用户包容和用户特定的路径特权

"users":{ 
    "$uid":{ 
     ".read": "$uid === auth.uid", 
     ".write": "$uid === auth.uid" 
    } 
} 

但如何让在用户节点的新用户,当新用户登录并保持读写用户特定的路径(AUTH!= NULL)特权?

换句话说: 有没有办法让一个新用户在登录后插入到用户节点中,同时限制他只能读写他自己的节点?

另一个问题。我有另一个节点与newData.exists()写入规则。在模拟器中,当我尝试向节点写入空数据时,它会按预期拒绝它,但它允许我将null写入同一节点的子节点。节点不应该将规则写入子级?

+0

你能否详细说明 - 或者举一个例子为 - 您的第二个问题吗? – Grimthorr

+0

永远不会,对不起。这不是因为我与它一起制定的另一条规则而起作用。 –

回答

0

你有上面的规则,会匹配$uidauth.uid。因此,例如,如果用户的UID是cKzMyjImSBX6ybzeCCCjf0qbTym1,他们将只能阅读/users/cKzMyjImSBX6ybzeCCCjf0qbTym1 &写在你的数据库,无论此键当前是否存在(如果写入时它不存在,这将是创建)。

Firebase documentation on rules

一旦用户通过验证,在你的火力地堡数据库的权威性变量 规则的规则将与用户的信息填充。此 信息包括其唯一标识符(UID)以及链接 帐户数据,诸如Facebook的ID或电子邮件地址,以及其他信息 。

+0

好吧,最后我明白了,规则与数据不相关。所以我不需要担心用户密钥(id)的创建,但主要是通过访问(读取和写入)存储在密钥下的所有信息。谢谢Grimthorr指点我的方向。 –

+0

我基本上离开了我的规则作为上面的例子,并且能够以我想要的方式从数据库读写。 –