Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Json 可以在firebase 3.x规则中使用。写入规则。验证情况吗?_Json_Firebase_Firebase Realtime Database_Firebase Security - Fatal编程技术网

Json 可以在firebase 3.x规则中使用。写入规则。验证情况吗?

Json 可以在firebase 3.x规则中使用。写入规则。验证情况吗?,json,firebase,firebase-realtime-database,firebase-security,Json,Firebase,Firebase Realtime Database,Firebase Security,我使用Firebase 3.x rules/security,但仍在努力找出设置系统的最佳方法 我知道应该如何使用.read、.write和.validate函数,但在某些情况下,我偶然发现了一个简单的解决方案,不知道这是否适合我使用。假设我通常有这样一条规则: ".write": "root.child('users').child(auth.uid).child('admin').val() === 'user_is_admin'", 如果用户是管理员,则允许任何用户写入。 现在,如果我有

我使用Firebase 3.x rules/security,但仍在努力找出设置系统的最佳方法

我知道应该如何使用.read、.write和.validate函数,但在某些情况下,我偶然发现了一个简单的解决方案,不知道这是否适合我使用。假设我通常有这样一条规则:

".write": "root.child('users').child(auth.uid).child('admin').val() === 'user_is_admin'",
如果用户是管理员,则允许任何用户写入。 现在,如果我有另一个对象,我允许每个人都写,但不希望管理员以外的用户触及某个特定字段,我使用以下方法:

".write": "auth != null",
   "option1": { ".validate": true },
   "option2": { ".validate": true },
   "option3": { ".validate": true }, 
   "option4": { ".validate": "root.child('users').child(auth.uid).child('admin').val() === 'user_is_admin'" } 
这允许任何经过身份验证的用户在本例中写入(基本上是任何字段)选项1、2、3和4,但由于选项4仅验证用户是否是管理员(从之前的规则复制),因此任何普通用户都不能触摸此单个参数


它工作得非常好,但我想知道这样工作是否可以。我认为这在很多情况下比为每个子项编写我自己的.read和.write规则要容易得多,通常情况下是这样的,因为我实际上使用了我的第一个.write完全访问权限,并且不能——稍后,在任何选项中——再次从用户那里夺走它。(除我的版本外)

删除数据时不执行验证规则。因此,根据您的规则,任何经过身份验证的用户仍然可以删除数据。这是一个重要的信息,thx为此,我没有考虑这一点,这就是为什么我在这里询问的原因。这意味着在某些情况下,当删除不是问题时,我仍然可以使用,我只想防止普通用户覆盖数据。例如,用户的权限。如果用户删除其所有权限,但他不能使用我的解决方案进行设置/覆盖,除非他是管理员,否则我没有问题。