Я пытаюсь установить правильные правила безопасности для своего приложения.
Обзор приложения, которое я пишу, заключается в том, что пользователи могут регистрироваться с помощью электронной почты и пароля (я использую Firebase Simple Login для этого, который отлично работает). После входа в систему пользователь может добавить свои todos.
angularFire('https://<firebase>/firebaseio.com/todos', $scope, 'todos');
И чтобы добавить новое todo к любому пользователю, я просто обновляю модель todos.
$scope.todos.push({
user: '[email protected]',
todo: 'What to do?'
});
Эти правила безопасности, которые я использую, чтобы запретить незарегистрированному пользователю добавить любое todo:
{
"rules": {
".read": true,
"todos": {
".write": "auth != null",
".validate": "auth.email == newData.child('user').val()"
}
}
}
Но он не позволяет даже аутентифицированному пользователю писать любые данные и выдавать ошибку, "ПРЕДУПРЕЖДЕНИЕ FIREBASE: on() или один раз() для /todos не удалось: Ошибка: permission_denied."
Но если я добавлю следующие данные в симулятор, то он работает как ожидалось.
{user: "[email protected]", todo: 'What to do?'}
Вот журнал:
/todos:.write: "auth != null"
=> true
/todos:.validate: "auth.email == newData.child('user').val()"
=> true
/todos:.validate: "auth.email == newData.child('user').val()"
=> true
Write was allowed.