需要为实时数据库设置规则,以检查字段user
是否符合auth.uid
。你可以那样做吗?
常规检查
"tasks": {
"$uid": {
".read": "$uid === auth.uid",
".write": "$uid === auth.uid"
}
}
这些规则无效,请检查auth.uid =! null
是否相同。
答案 0 :(得分:3)
您似乎想将数据库中的user
值与当前用户的UID匹配。但是,在您的示例中,您似乎混合了任务ID和用户ID。
您需要使用安全规则data
variable来将您的user
子节点与auth.uid
进行匹配。为此,您的规则应类似于:
"tasks": {
"$task_id": {
".read": "data.child('user').val() == auth.uid",
".write": "data.child('user').val() == auth.uid"
}
}
使用$task_id
将创建一个capture variable来匹配tasks
下的任何路径段,但是该实例的实际值未使用。相反,我们在tasks/$task_id/user
处获得子节点的值,并通过使用读写规则中的auth.uid
将其与data.child('user').val()
进行比较。
在securing your data documentation中可以找到所有有效规则变量的进一步阅读和一些示例。