Firebase实时数据库规则。获取URL中没有@uid的规则

时间:2018-11-05 11:23:07

标签: firebase firebase-realtime-database firebase-security-rules

需要为实时数据库设置规则,以检查字段user是否符合auth.uid。你可以那样做吗?

常规检查

"tasks": {
   "$uid": {
       ".read": "$uid === auth.uid",
       ".write": "$uid === auth.uid"
   }
}

这些规则无效,请检查auth.uid =! null是否相同。

image

1 个答案:

答案 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中可以找到所有有效规则变量的进一步阅读和一些示例。