Firebase 云函数似乎绕过了验证规则,但它不应该';T “连接来宾”:{ “$user_id”:{ “$to_user_id”:{ “.validate”:” !root.child('/connections/'+$user\u id++'/'+$to\u user\u id).exists() ", “分数”:{ .validate:“newData.val()*-1这是否意味着创建触发onCreate侦听器的节点的用户?是的,文档中是这么说的。我从来没有机会/需要尝试,所以请告诉我它是否有不同的效果。可能的答案如下。如果不是这样的话,就分享你认为不应该写的代码。 "connections-guests":{ "$user_id":{ "$to_user_id":{ ".validate": " !root.child('/connections/' + $user_id + '/' + $to_user_id).exists() ", "score": { ".validate": "newData.val() * -1 < now" }, "$other": { ".validate": false } } } },
显然,在云函数中,当我创建这个Firebase 云函数似乎绕过了验证规则,但它不应该';T “连接来宾”:{ “$user_id”:{ “$to_user_id”:{ “.validate”:” !root.child('/connections/'+$user\u id++'/'+$to\u user\u id).exists() ", “分数”:{ .validate:“newData.val()*-1这是否意味着创建触发onCreate侦听器的节点的用户?是的,文档中是这么说的。我从来没有机会/需要尝试,所以请告诉我它是否有不同的效果。可能的答案如下。如果不是这样的话,就分享你认为不应该写的代码。 "connections-guests":{ "$user_id":{ "$to_user_id":{ ".validate": " !root.child('/connections/' + $user_id + '/' + $to_user_id).exists() ", "score": { ".validate": "newData.val() * -1 < now" }, "$other": { ".validate": false } } } },,firebase,firebase-realtime-database,google-cloud-functions,Firebase,Firebase Realtime Database,Google Cloud Functions,显然,在云函数中,当我创建这个连接来宾节点时,它总是成功的,不管.validate 但是,在模拟器(write:true for root)中,验证规则是受尊重的。最有可能的情况是,您正在使用云函数代码中的Admin SDK访问数据库。当您使用其默认设置初始化AdminSDK时,它会以完全权限运行,实际上会绕过安全规则 如果您不想使用管理权限运行,您可以或者您可以作为触发函数的用户运行。作为触发函数的用户运行。->这是否意味着创建触发onCreate侦听器的节点的用户?是的,文档中是这么说的。我
连接来宾
节点时,它总是成功的,不管.validate
但是,在模拟器(write:true for root)中,验证规则是受尊重的。最有可能的情况是,您正在使用云函数代码中的Admin SDK访问数据库。当您使用其默认设置初始化AdminSDK时,它会以完全权限运行,实际上会绕过安全规则
如果您不想使用管理权限运行,您可以或者您可以作为触发函数的用户运行。
作为触发函数的用户运行。
->这是否意味着创建触发onCreate
侦听器的节点的用户?是的,文档中是这么说的。我从来没有机会/需要尝试,所以请告诉我它是否有不同的效果。可能的答案如下。如果不是这样的话,就分享你认为不应该写的代码。
"connections-guests":{
"$user_id":{
"$to_user_id":{
".validate": "
!root.child('/connections/' + $user_id + '/' + $to_user_id).exists()
",
"score": {
".validate": "newData.val() * -1 < now"
},
"$other": { ".validate": false }
}
}
},