这里我使用angularFire获取数据:
是否可以限制发送给Firebase中未经身份验证(angularfire)客户端的数据量(“门”数据)?
angular.module('FireApp', ['firebase'])
.controller('Document', function($scope, $routeParams, angularFire){
var url = "https://my-account.firebaseio.com/test" + "/" + $routeParams.data;
angularFire(url, $scope, data);
});
的问题是,这将载入“https://my-account.firebaseio.com/test/data”及其所有的孩子和孙子等..
的“/数据”是一个数组对象,它可以(但不必 - 它很可能是一个字符串数组)的类似于“/数据”的父:
data: ["0" : {
"data" : [...],
"meta" : {
"active" : false
},
"sign" : [...]
},
"1" : {
"data" : [...],
"meta" : {
"active" : true
},
"sign" : {...}
},
"2" : {
"data" : [...],
"meta" : {
"active" : false
},
"sign" : {...}
}]
基本上,我希望所有未经验证的angularFire客户只接收th数据数组的元素,其中布尔标志meta.active = true,即活动标志需要决定,而其祖父将在angularFire请求时发送给客户端。未经身份验证的客户端也无法写入/编辑任何数据。我想设置的规则应该是这样的:“只要'active = false'标志被设置,不要将标志的祖父母发送到angularFire客户端,除非客户端被认证。”所以是的规则需要是相对的而不是绝对的。
只有经过身份验证的客户端才能够接收/编辑所有数据。
我可以使用Firebase简单登录和安全规则制定这样的规则吗?
如果祖父母不能做到这一点,可以将“主动”标志向上移动一级以影响其父母。
谢谢您的时间,
贾里德
谢谢Anant。你的解决方案看起来很合理,但是它能工作任意数量的嵌套'数据'节点,它们还包含活动/非活动分隔? –
因为我想推动我的项目,所以我很感谢您对以上问题的及时答复。 –
不,它不适用于嵌套节点。如果你想嵌套,我会考虑创建一个全局活动/不活动列表(使用FirebaseRef.push()为每个对象生成唯一的ID),然后将这些对象的名称作为引用存储在数据节点中。然后你可以嵌套,但是你也需要在从适当的列表中检索它的名字后获取实际的对象。 – Anant