Правила безопасности баз данных в реальном времени нет доступа к root директой - PullRequest
0 голосов
/ 21 сентября 2019

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

с использованием файла подстановочного знака $, можно использовать консоль JS для загрузки в папку (узел), к которой у него есть доступ, но при попытке доступа ккаталог корневых файлов, он не будет загружать какие-либо файлы, вместо загрузки узлов, к которым у него есть доступ.Проблема заключается в том, что в корневом каталоге нет правил чтения, записи, а для функции рендеринга требуется захват значения этого каталога, который затем загружает файлы в каталог.

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

Что я имею в виду, что:

firebase.database().ref('/shared-files/shared/files/').on('value', (snapshot) => {
alert(snapshot.val())
})

предупредит json офайлы, к которым у вас есть доступ, кроме тех, которые у вас нет.Текущие правила для общих файлов приведены ниже, корневой каталог для общих файлов находится по адресу / shared-files / shared / files /

    "shared-files": {
      "shared": {
        "files": {
          "$file": {
                ".read":"root.child('shared-files').child('shared').child('files').child($file).child('users').hasChild(auth.token.email.replace('@forcloud.app',''))",
                ".write":"(root.child('shared-files').child('shared').child('files').child($file).child('users').hasChild(auth.token.email.replace('@forcloud.app',''))) || newData.exists()"
            }
        }
      }
    }

1 Ответ

0 голосов
/ 22 сентября 2019

Выглядит так, как будто вы надеетесь отфильтровать дочерние файлы в / shared-files / shared / files только для определенных, к которым у пользователя есть доступ.То, как вы делаете это сейчас, это невозможно. Правила безопасности не являются фильтрами .Если кому-либо из детей будет отказано в доступе, то все чтение не будет выполнено.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...