我的实时数据库由两个表(用户和对话)组成。该数据库存储聊天消息和用户。所有对话都是在两个人之间进行。
数据库结构:
**Users**
- AliceID
- Credentials
- Email (*alice@mail.com*)
- Name (*Alice*)
- ProfilePictuteLink (*https ...*)
- MyConversations
- interlocutorID (*BobID*)
- ConversationID (*AliceBobConvID*)
- BobID
- Credentials
- Email (*bob@mail.com*)
- Name (*Bob*)
- ProfilePictuteLink (*https ...*)
- MyConversations
- interlocutorID (*AliceID*)
- ConversationID (*AliceBobConvID*)
**Conversations**
- IDofConversation (*AliceBobConvID*)
- messageID (*1*)
- Content: “Hi, Alice!”
- fromID: “BobID”
- isRead: true
- Timestamp: 1524636221
- toID: “AliceID”
- Type: “text”
- messageID (*2*)
- Content: “Hi, Bob!”
- fromID: “AliceID”
- isRead: true
- Timestamp: 1524636321
- toID: “BobID”
- Type: “text”
当前我正在使用以下不安全规则
{
"rules": {
"users" : {
".read" : "auth != null",
".write" : "auth != null"
},
"conversations" : {
".read" : "auth != null",
".write" : "auth != null"
}
}
}
问题: 是否可以为当前数据库结构编写强大的安全规则?如果是这样,那么请提出安全规则,以实现数据库的强安全级别。如果不是,那么请提出一个数据库结构,该结构可以轻松创建强大的安全规则。
一些要求:
我正在使用Facebook身份验证。
答案 0 :(得分:1)
是否可以为当前数据库编写严格的安全规则 结构?
是
如果是,那么请提出安全规则以实现强大的安全性 数据库级别。
通常,对于您的情况,我们实施用户关联安全性规则。这意味着将为每个聊天(IDofConversation)分配userId。您可以在IDofConversation中添加一个特殊的数组来跟踪分配的userId。您的安全规则将用于检查是否分配了用户访问。有关如何构建数据库安全规则的更多详细信息,请参见here