2016-07-14 6 views
0

У меня есть некоторые проблемы, которые приводят к тому, что мои правила безопасности для firebase будут работать. Я получаю постоянное отрицание. Голые со мной, пока я пытаюсь объяснить, как я хочу, чтобы он работал и что я делаю.Проблемы с правилами безопасности Firebase

Structure of the database Это идеал, как я хочу, чтобы он был структурирован. Для упрощения чтения данных. Если определенная модель не существует. Пользователь сможет создать раздел для этого автомобиля и разместить там свой пост. Но когда другой пользователь хочет опубликовать ту же модель автомобиля. Он просто добавит в список сообщений.

{ 
    "rules":{ 
     ".read":"auth != null", 
     "Cars":{ 
     "$anyCar":{ 
      "$postName":{ 
       ".write":"auth != null", 
       ".validate":"newData.hasChildren(['uid']) && newData.child('uid').isString() && newData.child('uid').val() == auth.uid" 
      } 
     } 
     } 
    } 
} 

Вот как я применил свои правила для этой базы данных.

{ 
    "Volvo":{ 
     "-KM_nqDpB78ZM0SE485F":{ 
     "color":"-10053121", 
     "comments":0, 
     "date":10, 
     "id":1231, 
     "uid":"45738372-3b72-4328-aa99-a00c05482973", 
     "rating":0, 
     "topic":"Volvo is a safe car", 
     "user":"Brahim" 
     } 
    } 
} 

Это json я пытаюсь с на тренажере. Я проверяю подлинность, когда я использую симулятор, и я пытаюсь использовать его в отношении /Cars.

ответ

3

В соответствии с вашими правилами безопасности, вам разрешается писать в почту, но не создавать новый один

"$postName":{ 
    ".write":"auth != null", 
    ".validate":"newData.hasChildren(['uid']) && newData.child('uid').isString() && newData.child('uid').val() == auth.uid" 
     } 

Вы должны разрешить доступ на запись в $anycar узле и, возможно, только допустить, что специальный пользователь для редактирования сообщения

{ 
    "rules":{ 
     ".read":"auth != null", 
     "Cars":{ 
     "$anyCar":{ 
      ".write":"auth != null", 
      "$postName":{ 
      ".write": "auth.uid == newData.child('uid').val()" 
      ".validate":"newData.hasChildren(['uid']) && newData.child('uid').isString()" 
      } 
     } 
     } 
    } 
    } 
Смежные вопросы