Правило безопасности Firebase работает в симуляторе, но не в коде Angular

0

У меня есть приложение для чата, работающее на Angular и Firebase, но у меня проблемы с правилами безопасности.

Я создал следующее правило в качестве теста, и оно работает в симуляторе, но не будет работать с объектом, который я передаю Firebase из Angular.

{
"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
    Правила безопасности и аутентификации - это совершенно разные темы. Можете ли вы опубликовать весь свой набор правил?
Показать ещё 4 комментария
Теги:
firebase
firebase-security

1 ответ

0
{
"rules": {

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

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

Мне пришлось добавить еще один уровень правил для отдельных сообщений чата, очень простой на самом деле.

См. Https://www.firebase.com/docs/security/quickstart.html (Часть 3: Сделайте свои правила динамическими)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню