簡體   English   中英

使用 Firebase 中的安全規則限制社交媒體應用程序中的訪問

[英]Using Security Rules in Firebase to Limit Access in a Social Media App

我正在實施一個社交媒體應用程序,人們可以在其中發布帖子,其他人可以對他們投贊成票/反對票。 我正在使用 Firebase 實時數據庫。 我希望經過身份驗證的用戶能夠通過投票或投票來添加帖子和更改其他帖子的分數,但我不希望他們能夠更改其他帖子的內容或刪除其他帖子。 有沒有辦法讓用戶可以添加新帖子而不讓他們更改現有帖子? 還有一種方法可以確保當用戶更改帖子的分數時,他們只會增加或減少它嗎? 我正在考慮做這樣的事情,但它不起作用:

{
  "rules": {
    ".read": "auth.uid !== null",
    "posts": {
      ".write": "auth.uid !== null",
      "$postID": {
        "$score": {
            ".validate": "newData.isNumber() && (newData.val() == $score + 1 || newData.val() == $score - 1)" 
        }  
      }
    }
  }
}

請限制自己在每個帖子中提出一個問題

有沒有辦法確保當用戶更改帖子的分數時,他們只會增加或減少它?

是的,這是可能的,但在您的代碼中,您將newData.val() (新值)與$score進行比較,后者是節點的鍵(字符串)。 您需要與data.val()進行比較,因此:

".validate": "newData.isNumber() && (
    newData.val() == data.val() + 1 || 
    newData.val() == data.val() - 1
)" 

請注意,刪除節點時不會評估.validate規則,因此如果它還應防止刪除,您可能希望在.write規則中執行此操作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM