Firebase数据库安全规则

时间:2016-05-19 11:03:51

标签: security firebase firebase-realtime-database

我真的在使用firebase数据库安全规则。

我正在开发一个简单的应用程序,用户可以在其中维护记录列表,任何人都可以阅读,但只有创建记录的用户才能编辑或删除。

只需将其视为todo应用,经过身份验证的用户可以管理任务列表。用户可以阅读彼此的任务列表,但只有创建任务的用户才能删除或编辑它。

我尝试了不同的选项但未能提出正确的安全策略。

我是否可以遵循任何示例或有关如何构建数据以简化安全策略的任何建议?

示例安全规则

我尝试过这样的事情 -

"rules": {
"records" : {
  ".read" : true,
    "$user_id": {
         ".write": "auth.uid === $user_id"
        }
    }
  }
}

这样任何人都可以阅读记录,但只有具有匹配user_id的用户才能添加,编辑或删除记录。

然而,当我在模拟器中尝试写入操作时,我总是得到写入拒绝错误。我在请求正文/数据中将auth uid作为“user_id”传递。

我也试过

{
 "rules": {
 "records" : {
   ".read" : true,
    ".write": "auth.uid === data.child('user_id').val()"
     }
   }
}

2 个答案:

答案 0 :(得分:3)

我在文档中找到了这个。节点用户将使用auth.uid存储的子项作为键。因此,在写入该条目之前,您基本上将用户uid与密钥进行比较:

{
  "rules": {
    "users": {
      "$user_id": {
        // grants write access to the owner of this user account
        // whose uid must exactly match the key ($user_id)
        ".write": "$user_id === auth.uid",
        ".read": true
      }
    }
  }
}

https://www.firebase.com/docs/security/guide/user-security.html

答案 1 :(得分:0)

尝试添加以下节点->“ $ record_id”:{}

{
 "rules": {
 "records" : {
   "$record_id": {
      ".read" : true,
       ".write": "auth.uid === data.child('user_id').val()"
        }
      }
   }
}
相关问题