Разрешить только администраторам записывать данные - База данных Firebase Realtime - Правила безопасности - PullRequest
0 голосов
/ 01 августа 2020

Я хочу предоставить разрешение .write только тем аутентифицированным пользователям с isAdmin: true Ниже представлена ​​структура базы данных. В узле клиенты (пользователи) uid - это идентификатор аутентификации, сгенерированный Firebase.

{
  "clients" : {
    "-M8bGQaB....." : {
      "isAdmin" : true,
      "uid" : 5gvR1GzT...
     }
   },
  "products" : {
    "-M81GzT....." : {
     "productName": "Product 1"
      },
    "-M81GzT....." : {
     "productName": "Product 2"
    }
}

1 Ответ

0 голосов
/ 01 августа 2020

С вашей текущей структурой данных невозможно найти профиль пользователя в правилах безопасности, поскольку правила безопасности не могут выполнять поиск по всем пользователям.

Вот почему правильная структура данных для хранения используется пользователем их UID в качестве ключа. В вашем случае это будет выглядеть так:

  "clients" : {
    "5gvR1GzT..." : {
      "isAdmin" : true
     }
   },

С помощью этого JSON вы можете разрешить пользователям писать продукт только тогда, когда свойство isAdmin для их UID установлено на true с:

{
  "rules": {
    "products": {
      "$productid": {
        ".write": "root.child('clients').child(auth.uid).child('isAdmin').val() == true"
      }
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...