Правила Firebase не работают. Возвращать данные, даже когда я настраиваю правила в Firestore - PullRequest
0 голосов
/ 09 января 2019

Я настроил Firebase Functions для звонков в мой Firestore. Я использую admin.auth () и возвращаю данные. Я установил пользовательские правила в разделе «Правила Firestore», но функции не следуют правилам, т. Е. Когда я использую URL в Почтальоне, я не должен получать данные, потому что они не выполняются «если прочитано, напишите: если запрос» .auth! = null ". Как мне это решить?

Вот мой код функции Firebase:

const admin = require('firebase-admin');

module.exports = function(req, res) {
  const uid = req.body.uid;

  admin
    .auth()
    .getUser(uid)
    .then(user => {
      admin
        .firestore()
        .collection('discover')
        .get()
        .then(snapshot => {
          res.send(
            snapshot.docs.map(doc => {
              const data = Object.assign({ doc_id: doc.id }, doc.data());
              return data;
            })
          );
        })
        .catch(err => {
          res.send({ message: 'Something went wrong!', success: false });
        });
    })
    .catch(err => {
      res.send({ error: 'Something went wrong!', success: false });
    });
};

Правила хранения файлов:

service cloud.firestore {
  match /databases/{database}/documents {

      match /users/{users} {
    allow read: if request.auth != null;
      }
      match /discover/{discover} {
    allow read: if request.auth != null;
      }
      match /favorites/{favorite} {
    allow read, write: if request.auth != null;
      }
    }

}

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

1 Ответ

0 голосов
/ 09 января 2019

Правила безопасности не применяются при доступе к базе данных через Admin SDK или при любом другом использовании учетной записи службы. Неважно, что вы используете почтальон (или любой другой HTTP-клиент). В действительности доступ к базе данных здесь - это Admin SDK.

...