2015-09-29 95 views
0

我有一個處理Angular和Firebase的準系統聊天應用程序,但在安全規則方面遇到問題。Firebase安全規則適用於模擬器,但不適用於Angular代碼

我已經創建了以下規則作爲測試,並且它在模擬器中工作,但不適用於我從Angular傳遞Firebase的對象。

{ 
"rules": { 

    "chat": { 
    ".read": true, 
    ".write":"newData.child('text').val() === 'test'" 
    } 
} 
} 

我的角碼看起來如下。 $ rootScope.userDing只是一個在auth時保存用戶信息的對象。

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 

我要去哪裏錯了或者有沒有人有任何調試技巧?

+0

我已經嘗試了一些其他的規則和東西,但它似乎並沒有任何工作。 –

+0

安全規則和身份驗證是完全不同的主題。你能發佈你的整個規則集嗎? –

+0

檢查更改後的代碼:) –

回答

0
{ 
"rules": { 

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

    "$chatMsg": { 
    ".write": true, 
    ".validate": "newData.child('text').val() === 'test'" 
    } 
    } 
} 
} 

我不得不爲另外一層單獨的聊天消息做出裁決,真的很簡單。

見:https://www.firebase.com/docs/security/quickstart.html(3部分:使你的規則動態)

相關問題