Firebase Anonymous Data Security

1

Firebase реального времени DB безопасности из приложения JS.

Я разрешаю разрешение на чтение для всех пользователей с паролем. Затем, для всех других типов (только анонимный, по моей схеме), я хочу разрешить чтение только для определенных /bundles/.

Это правила -

{
    "rules": {
        ".read": "auth != null && auth.provider == 'password'", // working!
        "bundles": {
            "$bundle": {
                ".read": "data.child('anonymous').val() == true", // not working
            }
        },
    }
}

И /bundles -

  "-L-2BbIkAg6J9WPMaJpJ": {
    "anonymous": true,
    "more_data": "data_1"
  },
  "-L-UHBr45eEUHGwsPWqq": {
    "anonymous": false,
    "more_data": "data_2"
  }

Я ожидаю, что при регистрации в качестве анонимного, чтобы увидеть только первый пакет, но вместо этого я получаю сообщение об ошибке от FB - "permission_denied at/bundles".

  • 0
    Правила AFAIK Firebase не фильтруют данные. Вы пытаетесь сделать запрос вроде ref.child('bundles').once('value') ?
  • 0
    Это можно рассматривать как фильтрацию, но я взял идею из - firebase.google.com/docs/database/security/… . В частности - "rules": {"messages": {"$ message": {// могут быть прочитаны только сообщения за последние десять минут ".read": "data.child ('timestamp'). Val ()> ( сейчас - 600000) ",}}}
Теги:
firebase
firebase-security

1 ответ

1
Лучший ответ

.read не работает, потому что вы пытаетесь получить доступ к местоположению /bundles. Если вместо этого вы запросите конкретный пакет напрямую, он пройдет:

// read denied
ref.child('bundles').once('value')

// read allowed
ref.child('bundles/-L-2BbIkAg6J9WPMaJpJ').once('value')

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

{
  "rules": {
    ".read": "auth != null && auth.provider == 'password'",
    "anonymousBundles": {
      ".read": "auth != null" 
    }
  }
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню