node.js - 如何使我的 Firestore 监听器安全/安全?
问题描述
您好,我有一个带有 firebase 的侦听器,因此只要有更改,它就会执行功能。我需要将此侦听器放入软件中,以便在检测到更改时执行功能。我怎么能把这个监听器放在我的其他代码中,并确保我的数据库保持安全,并且没有人能弄乱它?
const functions = require("firebase-functions");
// // Create and Deploy Your First Cloud Functions
// // https://firebase.google.com/docs/functions/write-firebase-functions
const express = require('express');
const cors = require('cors');
const admin = require('firebase-admin');
admin.initializeApp();
const app = express();
const db = admin.firestore()
exports.onCreate = functions.firestore.document('users/{userId}').onCreate(async (snap, context) => {
const values = snap.data();
await db.collection('logging').add({description : `SKU was sent to discord with ${values.username}`})
})
解决方案
使用 Firebase 函数和 Firestore,您可以执行以下操作:
将所有 Firebase 功能保留在服务器端,而不是客户端。服务器端功能具有管理员访问权限,但除了 firebase 帐户所有者/管理员之外,任何人都无法访问它们。
然后,您使用“ onUpdate ”firebase 函数:每次您的文档(数据)更改时,您的 Firebase 函数都会运行。
那么它应该怎么做呢?
只需让它通过 HTTP GET 或 POST 调用调用您的外部(不可信)软件。您可以使用Axios来做到这一点,甚至可以将 JSON 或查询参数传递给该外部软件。你可以让外部代码做它应该做的事情,而不必直接与你的数据库交互。
推荐阅读
- c++ - googlemock 分段错误与 EXPECT_CALL 的简单情况
- aws-sdk - 在 SaaS 订阅后获取 AWS Marketplace 权利
- javascript - 如何将信息从 Node 传递到 React
- go - 基于异步回调的 API 的同步 API 包装器
- reactjs - 仅在点击屏幕时检测到状态变化
- sql - 在地址字段中的房屋编号前插入逗号
- google-app-engine - 通过 Node.js 进行 AppEngine 身份验证
- sql - 如何正确过滤sqlite数据库中的数据?
- html - 在 HTML 页面上显示收到的 gstreamer mjpeg
- wordpress - 如何将自定义 HTML 表单与 wordpress 电子邮件地址连接起来