Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/380.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
Javascript 是否可以限制发送到firebase中未经身份验证(angularFire)客户端的数据量(“数据门”)?_Javascript_Angularjs_Firebase_Angularfire - Fatal编程技术网

Javascript 是否可以限制发送到firebase中未经身份验证(angularFire)客户端的数据量(“数据门”)?

Javascript 是否可以限制发送到firebase中未经身份验证(angularFire)客户端的数据量(“数据门”)?,javascript,angularjs,firebase,angularfire,Javascript,Angularjs,Firebase,Angularfire,这里我使用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);

这里我使用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);
});
问题是,这将加载“”及其所有子代和子代等…
“/data”是一个对象数组,它可以(但不必-它很可能是一个字符串数组)看起来与“/data”的父对象相似:

基本上,我希望所有未经验证的angularFire客户端只接收数据数组中的那些元素,其中布尔标志meta.active=true,即活动标志需要决定,而angularFire请求时其祖辈将被发送到客户端。此外,未经验证的客户端无法写入/编辑任何数据。我想设置的规则应该是:“只要设置了'active=false'标志,就不要将该标志的祖父母发送给angularFire客户端,除非该客户端经过身份验证。”。因此,是的,规则需要是相对的,而不是绝对的。
只有经过身份验证的客户端才能接收/编辑所有数据。
我可以用Firebase简单的登录和安全规则制定这样的规则吗
如果无法为祖父母执行此操作,则可以将“活动”标志上移一级以影响其父母。
感谢您抽出时间,

Jared

您需要重新构造数据,以便使用Firebase实现这一点。有关以下内容的背景信息,请参阅本博客文章:

构建数据的一种方法是创建两个单独的列表,一个用于活动项,另一个用于非活动项。当某个项目处于活动或非活动状态时,请确保将其从一个列表中删除并放入另一个列表中

{
“活动”:{
0: {
“数据”:{…},
“符号”:{…}
}
},
“非活动”:{
0: {
“数据”:{…},
“符号”:{…}
}
}
}
在您的安全规则中,您可以简单地阻止未经身份验证的用户访问非活动项目:

{
“规则”:{
“活动”:{
“.read”:正确
},
“非活动”:{
.read:“auth!=null”
}
}
}

希望这有帮助

谢谢你,阿南特。您的解决方案看起来不错,但这是否适用于包含活动/非活动分隔的任意数量的嵌套“数据”节点?如果您能及时回答上述问题,我将不胜感激,因为我希望将我的项目向前推进。不,它不适用于嵌套节点。如果您想嵌套,我会考虑创建一个全局活动/非活动列表(使用FiasBaseE.Puthor()来生成每个对象的唯一ID),然后将这些对象的名称作为数据节点内的引用存储起来。然后,您可以嵌套,但在从适当的列表中检索到实际对象的名称后,还需要获取该对象。非常感谢。我明白你的意思,这就是我要做的。现在看来这是我最好的解决办法。干杯
data: ["0" : {
    "data" : [...],
    "meta" : {
      "active" : false
    },
    "sign" : [...]
  },
  "1" : {
    "data" : [...],
    "meta" : {
      "active" : true
    },
    "sign" : {...}
  },
  "2" : {
    "data" : [...],
    "meta" : {
      "active" : false
    },
    "sign" : {...}
  }]