0
在iOS的消息傳遞應用程序,我創建,結構的信息節點的概要如下我怎麼能指孩子通配符變量火力地堡
"messages": {
"$uid":{
".read": "auth.uid == $uid",
"$messageId":{
// insert .write rule here
"toUid":{
// if its a group message then there would be multiple "$toUid" children
"$toUid":{
},
},
"fromUid":{
"$fromUid":{
}
},
"timeStamp":{
},
"group":{
"isGroupMessage":{
},
"groupId":{
}
}
}
}
},
我想補充一個寫入規則在$ messageId之後,以確保「$ toUid」或「$ fromUid」等於$ uid。
任何想法我可以做到這一點?
是下面這樣做的最佳方式:
".write": "newData.child('toUid').hasChild($uid) || newData.child('fromUid').hasChild($uid)",
**我已經與下面的解決方案 - 改變結構,但是是最快/最安全的安全規則,我們用現在。
MVP最初不會有組消息(可能不相關,但邏輯可能不同) - 所以或者我可以添加一個wildCard子變量「$ friendUid」,然後在下面有下面的規則。
"$messageId":{
"$friendUid":{
".write": "$uid == auth.uid || $friendUid == auth.uid",
你不能在如果列表包含特定值的安全檢查。您只能檢查是否存在特定的密鑰。所以你的第一個'.write'片段確實是正確的方法。你有問題嗎? –
@FrankvanPuffelen認爲我已經明白了,謝謝。我將添加一個帶有「$ friendUid」通配符變量的額外圖層,這似乎是我們前進的最簡單/最安全的方式。問題更多地考慮了更進一步的功能,這與沒有用戶無關:)(還沒有發佈) – Edward
聽起來不錯愛德華。你可以發佈你的解決方案作爲答案? Stack Overflow鼓勵自我回答,這是建立聲譽的好方法。 –