我真的很难应对 Firebase 数据库安全规则。
我正在开发一个简单的应用程序,用户可以在其中维护一个记录列表,任何人都可以读取该列表,但只有创建该记录的用户可以编辑或删除。
只需将其视为待办事项应用程序,经过身份验证的用户可以在其中管理任务列表。用户可以互相读取任务列表,但只有创建该任务的用户才能删除或编辑该任务。
我尝试了不同的选项,但未能提出正确的安全策略。
是否有任何我可以遵循的示例或关于如何构建数据以简化安全策略的任何建议?
安全规则示例
我尝试过这样的事情 -
"rules": {
"records" : {
".read" : true,
"$user_id": {
".write": "auth.uid === $user_id"
}
}
}
}
这样任何人都可以读取记录,但只有具有匹配 user_id 的登录用户才能添加、编辑或删除记录。
但是,当我在模拟器中尝试写入操作时,我总是收到写入拒绝错误。我在请求正文/数据中将身份验证 uid 作为“user_id”传递。
我也尝试过
{
"rules": {
"records" : {
".read" : true,
".write": "auth.uid === data.child('user_id').val()"
}
}
}
最佳答案
我在文档中找到了这一点。节点用户有以 auth.uid 作为 key 存储的子节点。因此,在写入该条目之前,您基本上将用户 uid 与 key 进行比较:
{
"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
关于security - Firebase 数据库安全规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37321308/