Firebase 数据库安全规则

am1*_*m17 3 security firebase firebase-realtime-database

我真的在为 firebase 数据库安全规则而苦苦挣扎。

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

只需将其视为待办事项应用程序,经过身份验证的用户可以管理任务列表。用户可以互相阅读任务列表,但只有创建任务的用户才能删除或编辑它。

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

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

示例安全规则

我试过这样的事情 -

"rules": {
"records" : {
  ".read" : true,
    "$user_id": {
         ".write": "auth.uid === $user_id"
        }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

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

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

我也试过

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

Sal*_*vic 5

我在文档中找到了这个。节点用户具有以 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
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

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