是否可以在firebase 3.x规则中的.validate情境中使用.write规则?

时间:2016-12-27 15:02:38

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

我使用Firebase 3.x规则/安全性,并且仍在尝试找出设置系统的最佳方法。

我理解我应该如何使用.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进行编写(基本上是任何字段),但由于option4仅验证用户是否为admin(从之前的规则复制),因此没有普通用户可以触摸这个单一参数。

它工作得很好,但我想知道这样工作是否可以。我认为这使得在很多情况下更容易,而不是为每个子项编写我自己的.read和.write规则,这通常是这种情况,因为我实际上给了我的第一个.write完全访问权限并且不能 - 任何选项内部 - 再次从用户处取走它。 (除了我的版本)

0 个答案:

没有答案