【发布时间】:2018-10-10 10:35:42
【问题描述】:
我正在使用 Ionic/Angular 和 Firebase 构建一个实时信使。我正在使用 Firebase 身份验证来验证我的用户,并使用 Firebase DB 来存储消息和消息线程。
我的问题是我应该使用什么安全规则才能使消息线程成为私有的、可行的,并且只对参与给定消息线程的 2 人可写。
我的数据库结构现在看起来像这样:
-chats
--Message_thread_ID
---Unique_ID_generated_message by Firebase
----Message
----Sender ID
----Receiver ID
---Unique_ID_generated_message by Firebase
----Message
----Sender ID
----Receiver ID
--Message_thread_ID
---Unique_ID_generated_message by Firebase
----Message
----Sender ID
----Receiver ID
我当前的 firebase 安全规则是:
{
"rules": {
".read": "auth != null",
".write": false,
"$messageThreadID": {
".write": "auth != null && !data.exists()",
".read": "auth != null"
}
}
}
这很好用,但是这样任何经过身份验证的用户都可以阅读任何用户之间的所有消息。这不是我想要的。我想让消息线程只对任何给定线程中的两个用户保密。
我应该如何重组我的数据库以获得最佳解决方案?
PS:我有办法使用后端来做到这一点,或者为各自线程的两个用户中的每一个制作两个副本,但这些解决方案看起来真的很次优。
【问题讨论】:
标签: firebase firebase-realtime-database firebase-authentication firebase-security