2016-11-18 48 views
1

例如,这是数据库:如何在Firebase数据库中实现基于用户的安全性?

"Messages" : { 
     "Message1" : { 
       "Uid" : "sampleid1" 
       "Text" : "hi" 
       }, 
     "Message2" : { 
       "Uid" : "sampleid2" 
       "Text" : " hello" 
       } 
    } 

我想只有那些用户读取其UID等于Message#Uid场的消息。

Firebase文档中给出的数据库结构(即,在数据库中使用基于用户ID的消息,其中每个消息的节点表示发送消息的用户的uid)并不能达到我的项目目标,因为我每次用户发送消息时都需要知道发送消息的用户的uid。

因此,请建议有助于我完成我在这个问题中提到的任务的规则

另外,当我在数据库的上述结构中应用某些规则时,我无法读取任何数据,因为'firebase规则是不是过滤器“。

请忽略上面示例中写入的json的语法和格式,因为它仅供参考

请帮忙!

回答

0

结构数据,以便:

"messages" : { 
    "<receiver_uid>" : { 
     "msg_1" : { 
     "text" : "Hello world...", 
     "uid" : "<sender_uid>" 
     } 
     // more msgs for this receiver ... 
    } 
} 

规则应该像

{ 
    "rules" : { 
    "messages" : { 
     "$receiver" : { 
     ".read" : "auth.uid == $receiver", // only receiver shall read 
     ".write" : "auth != false" // any authenticated user can write 
     } 
    } 
    } 
} 
+0

不,先生,这个结构不会为我工作。因为我需要将更改后的监听器附加到消息上,然后将孩子添加到接收方uid的监听器中,所以它不会将我接收到该消息的人员的身份提供给我。这是我在问题中提到的。 –

+0

你能告诉更多一点你实际上想达到什么吗?我不明白这个问题。 – entwicklerfuchs

相关问题