Flatter firebase отправляет токен с чтением базы данных - PullRequest
0 голосов
/ 18 апреля 2020

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

enter image description here

Итак, мой вопрос, как я могу отправить параметр с моим запросом на чтение флаттера? А как можно сравнить, если токен в запросе совпадает с токеном в документе. Я подумал, что это будет примерно так:

match /databases/{database}/documents {
  match /test/{document} {
    allow write, read: if request.resource.data.token== document.data.token;
  }
}

1 Ответ

1 голос
/ 18 апреля 2020

Итак, мой вопрос: как я могу отправить параметр с моим запросом на чтение флаттера?

Вы не можете передать свои собственные параметры правилам безопасности. Единственная информация, доступная в правилах безопасности (для запроса на чтение):

Так что если вы хотите сделать этот тип проверки, вам придется кодировать токен в одну из этих трех вещей. Самый простой - использовать токен в качестве идентификатора документа. И затем измените ваши правила на:

match /databases/{database}/documents {
  match /test/{document} {
    allow get: if true;
  }
}

Пользователь теперь может по-прежнему get документ, но больше не может list документов (read он такой же, как get + list ). Это сводится к следующему: если вы знаете идентификатор документа, вы можете прочитать его. Это довольно распространенный способ защиты доступа к документам, который известен как форма общего секрета.

...