#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.