2016-06-25 3 views
0

Я только начинаю с Firebase.Firebase simple user auth rule

Я использую один из шаблонов quickstart-js.

Я пытаюсь добавить правило безопасности .read, чтобы пользователи могли читать только сообщения, созданные созданным.

Я немного смущен, так как правило проходит, если я тестирую auth.id, но не удалось, если я проверил против auth.uid (я понимаю, что auth.uid верен).

В тренажере, это правило не удается:

{ 
    "rules": { 
    // ".read": "auth != null", 
    ".write": "auth != null", 
     "posts": { 
     "$post": { 
      ".read": "data.child('uid').val() === auth.uid", 
     } 
    } 
    } 
} 

Вот структура базы данных:

{ 
    "posts" : { 
    "-KL6ecPO67H5B8SmPHJr" : { 
     "body" : "Just testing out the firebase system.", 
     "starCount" : 0, 
     "title" : "Camp Se has it's first blog post", 
     "uid" : "vaZrC0sSdYTiou587IuePVw9uRT2" 
    }, 
    "-KL6fUBOhsc4zosJbwjb" : { 
     "body" : "Another post ja ja ja\n", 
     "starCount" : 0, 
     "title" : "Another post", 
     "uid" : "vaZrC0sSdYTiou587IuePVw9uRT2" 
    } 
    }, 
    "user-posts" : { 
    "vaZrC0sSdYTiou587IuePVw9uRT2" : { 
     "-KL6ecPO67H5B8SmPHJr" : { 
     "body" : "Just testing out the firebase system.", 
     "starCount" : 0, 
     "title" : "Camp Se has it's first blog post", 
     "uid" : "vaZrC0sSdYTiou587IuePVw9uRT2" 
     }, 
     "-KL6fUBOhsc4zosJbwjb" : { 
     "body" : "Another post ja ja ja\n", 
     "starCount" : 0, 
     "title" : "Another post", 
     "uid" : "vaZrC0sSdYTiou587IuePVw9uRT2" 
     } 
    } 
    }, 
    "users" : { 
    "vaZrC0sSdYTiou587IuePVw9uRT2" : { 
     "email" : "[email protected]com" 
    } 
    } 
} 

Результаты моделирования Подробности:

Simulation results 
Type read 
Location /posts/KL6ecPO67H5B8SmPHJr/ 
Data null 
Auth { "provider": "google", "uid": "vaZrC0sSdYTiou587IuePVw9uRT2" } 
Admin false 
edit Read denied 
close 
Line 7 (/posts/KL6ecPO67H5B8SmPHJr) 
read: "data.child('uid').val() === auth.uid" 
+1

Вы включили изображение вашего дерева JSON в свой вопрос. Пожалуйста, замените это на фактический JSON как текст, который вы легко можете получить, нажав кнопку «Экспорт» в консоли базы данных Firebase. Наличие JSON в качестве текста делает его доступным для поиска, позволяет нам легко использовать его для тестирования с вашими фактическими данными и использовать его в нашем ответе, и в целом это просто хорошая вещь (tm). –

+0

Когда вы открываете Детали сообщения об ошибке, что он говорит. Это как текст тоже было бы более полезным, чем как скриншот. –

ответ

2

У меня была ошибка в моих тренажерах Поле «Местоположение». Когда я скопировал идентификатор сообщения из базы данных, я пропустил предыдущий символ -.

Я исправил это, и правило работает :-)

+1

Приятно послушать Тим. Я собираюсь голосовать, чтобы закрыть ваш вопрос как опечатку, так как маловероятно, что люди, совершившие ту же ошибку, найдут ее (потому что они не знают о причине их проблемы). –