我想保护数据安全,同时允许多个用户在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