Angularjs Firebase安全规则在模拟器中工作,但在角代码中不工作

Angularjs Firebase安全规则在模拟器中工作,但在角代码中不工作,angularjs,firebase,firebase-security,Angularjs,Firebase,Firebase Security,我有一个在Angular和Firebase上运行的裸体聊天应用程序,但在使用安全规则时遇到了问题 我创建了以下规则作为测试,它在模拟器中工作,但不适用于我从角度通过Firebase的对象 { "rules": { "chat": { ".read": true, ".write":"newData.child('text').val() === 'test'" } } } 我的角度代码如下所示$userDing只是一个在身份验证时保存用户信息的对象 var app

我有一个在Angular和Firebase上运行的裸体聊天应用程序,但在使用安全规则时遇到了问题

我创建了以下规则作为测试,它在模拟器中工作,但不适用于我从角度通过Firebase的对象

{
"rules": {

  "chat": {
    ".read": true,
    ".write":"newData.child('text').val() === 'test'"
  }
 }
}
我的角度代码如下所示$userDing只是一个在身份验证时保存用户信息的对象

var app = angular.module("fpl-chat", ["firebase"]);

app.controller("SampleCtrl", function($rootScope, $scope, $firebaseArray) {
  var ref = new Firebase("https://glaring-torch-9680.firebaseIO.com/chat");

  $scope.messages = $firebaseArray(ref);

  $scope.addMessage = function() {
    if ($rootScope.userDing) {
        $scope.toAdd = {
            text: $scope.newMessageText,
            timestamp: Date.now(),
            user: $rootScope.userDing.name,
            imgSrc: $rootScope.userDing.imgSrc,
            uid: $rootScope.userDing.uid
        }
    } else {
        $scope.user = 'Guest';
        $scope.imgSrc = 'assets/img/guest.png';
        $scope.uid = 'guestUID';
    }
    $scope.messages.$add($scope.toAdd);
    $scope.newMessageText = '';
  };

});
如果
$scope.newMessageText
'test'
,那么它仍然不允许写操作

我得到的错误是:

FIREBASE WARNING: set at /chat/-K-YU0reCudVPu_8t74s failed: permission_denied
我哪里出错了,或者有人有任何调试技巧吗

{
"rules": {

  "chat": {   
    ".read": true,

    "$chatMsg": {
    ".write": true,
    ".validate": "newData.child('text').val() === 'test'"
   }
  }
 }
}
我不得不为个人聊天信息添加另一层规则,非常简单


请参阅:(第3部分:使您的规则动态化)

我尝试了其他一些规则和东西,但似乎对任何规则都不起作用。安全规则和身份验证是完全不同的主题。您可以发布您的整个规则集吗?检查更改的代码:)控制器/服务代码的其余部分如何?具体地说,只要设置了
$scope.messages
,就无法用这么少的代码重现您的问题。为了缩小范围,您还可以做很多事情:首先用包含值的字符串替换这些变量,排除可能性,直到您验证了问题消失的点。看见