Firebase实时数据库安全性

时间:2019-08-07 06:57:04

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

我想保护数据安全,同时允许多个用户在Firebase Realtime数据库中获取他们有权访问的“笔记”。

数据库结构:

"notes" : {
  "note_001": {
    "access": {
      "author": "user-001",
      "members": {
        "user-002": true
      }
    }
    "data" : {
      "note": "Hello world!"
    }
  }
}

Firebase规则:

{
  "rules": {
    "notes": {
      ".read": "
        auth.uid !== null &&
        query.equalTo === auth.uid
      ",
      "data": {
        ".read": "
        //Note author or member
        data.parent().child('access').child('author').val() === auth.uid ||
        data.parent().child('access').child(auth.uid).exists()
        "
      }
    }
}

对应的数据库查询:

database.ref("notes")
  .orderByChild("access/author")
  .equalTo(`${user.uid}`)
  .once('value', (snapshot) => {
    snapshot.forEach( (data) => {
      console.log("OWNER", data.val().data.title)
    })
})

database.ref("notes")
  .orderByChild(`access/members/${user.uid}`)
  .equalTo(true)
  .once('value', (snapshot) => {
    snapshot.forEach( (data) => {
      console.log("MEMBER", data.val().message.data.title)
    })
})

这是保护数据安全的正确方法吗?

这会阻止不是作者或成员的任何人阅读注释吗?

亲切的问候/ K

0 个答案:

没有答案
相关问题