适用于特定用户的Firebase实时数据库读取规则

时间:2017-11-15 10:06:17

标签: firebase firebase-realtime-database firebase-security

如何向Firebase实时数据库添加新规则,以便用户可以读取recid等于用户ID的数据?

我有一个这种结构的按摩床:

"messages" : {
    "-KyyjeMOtc7fWAsOiuiP" : {
      "recid" : "FL5hyQJrsHWRQsRtiLe1PxkyRnk1",
      "senderid" : "6K6pQHaCishDlCb0Y9AaN3zI22n1",
      "text" : "hi"
    },
    "-KyykczCNpsSL6a1t8vt" : {
      "recid" : "FL5hyQJrsHWRQsRtiLe1PxkyRnk1",
      "senderid" : "6K6pQHaCishDlCb0Y9AaN3zI22n1",
      "text" : "test"
    },
  }

我想要一条规则,当数据添加到数据库时,只有uid等于recid的用户才能看到数据。

1 个答案:

答案 0 :(得分:2)

要实现此目的,您可以为数据库创建user-based security rules,类似于:

{
  "rules": {
    "messages": {
      "$messageId": {
        ".read": "auth.uid == data.child('recid').val()",
        ".write": "auth !== null"
      }
    }
  }
}

在此示例中,$messageId使用的$location variable将匹配messages列表下的任意键。然后,仅当current user's auth.uidrecid子值匹配时,我们才会授予读取权限。