Узнайте, какой пользователь подчеркивает использование firestore

#firebase #google-cloud-firestore

#firebase #google-облако-firestore

Вопрос:

Есть ли какой-либо способ узнать, какой пользователь отправляет запросы на рассылку спама в моем настроенном firestore, чтобы удалить их.

Сценарий заключается в том, что пользователь может отправлять определенный запрос много раз, что приведет к превышению моего дневного лимита.

У меня есть доступ как к клиенту, так и к firebase, так что лучше использовать клиентский подход или использовать подход firebase rules / functions?

Большое спасибо

Ответ №1:

Единственные механизмы для мониторинга использования Firestore показаны в документации. Не предусмотрено механизма для отслеживания доступа для каждого пользователя, если вы каким-либо образом не реализуете это самостоятельно.

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

Ответ №2:

Firebase действительно не поддерживает использование для каждого пользователя. Но вы можете использовать функции firebase. идея состоит в том, чтобы создать функцию, которая вызывает действие пользователя из клиентского приложения для чтения или записи нового документа от имени пользователя. При вызове функции вы можете получить IP вызывающего с помощью request.ip из express. вы можете использовать этот IP, либо сохранив его в какой-либо новой базе данных, скажем, firestore, чтобы отслеживать, сколько операций чтения или записи выполнено этим пользователем.

 exports.trackUsers = functions.https.onRequest((request, response) => {
  console.log(request.ip);
  ....
});
  

в любом случае, простое использование IP-адреса запроса не может быть идеальным, поскольку, возможно, пользователи подключены к одному и тому же Wi-Fi, и у них один и тот же ip. поэтому вам может потребоваться создать какой-то уникальный идентификатор, например, uid пользователя из firebase auth.