permission_denied权限:客户端无权访问所需数据

时间:2017-03-07 04:05:06

标签: angularjs firebase angularfire

这是我第一次使用firebase,当我尝试检索数据时,我无法使用它。

我已经实现了firebase的授权并使用了它,现在可以从任何控制器(下面的检查控制器)查看用户的数据,但是当我尝试从数据库中检索数据时,我收到此错误:

permission_denied at /: Client doesn't have permission to access the desired data.

我关于Feed的数据库规则是:

{
  "rules": {
    ".read": "auth != null",
    ".write": "auth != null"
  }
}

如果我将它们公之于众,我就可以获得数据,但我不想这样做,我在网上找不到任何关于如何发送用户ID以从firebase获取数据的文档。 / p>

我的控制器:

.controller('homeCtrl', ['$scope','$firebaseObject','currentAuth',
    function($scope,$firebaseObject,currentAuth) {

        console.info('currentAuth',currentAuth); // This returns the needed info about the current user including the uid

        // This is where I get the permission denied error.
        var ref = firebase.database().ref();
        // download the data into a local object
        $scope.data = $firebaseObject(ref);
}]);

感谢任何帮助,谢谢。

1 个答案:

答案 0 :(得分:0)

当您附加侦听器时,看起来用户未经过身份验证。像您一样记录用户并不是一个很好的指标,因为浏览器的开发工具会在更改时显示currentAuth的更新值。如果您改为记录console.info('uid',currentAuth.uid),您可能会发现它是null

一旦用户通过身份验证,您应该只附加您的侦听器。来自AngularFire documentation

$scope.authObj.$onAuthStateChanged(function(firebaseUser) {
  if (firebaseUser) {
    console.log("Signed in as:", firebaseUser.uid);
    var ref = firebase.database().ref();
    $scope.data = $firebaseObject(ref);
  } else {
    console.log("Signed out");
  }
});