json - 我可以阻止经过身份验证的用户查看我的整个 Firebase 数据库 JSON 文件吗?
问题描述
我创建了一个包含 5000 多名服务技术人员的 json 文件,我正在开发一个网站,有人可以在该网站上根据位置搜索特定服务。我是firebase的新手,所以假设我将以下JSON存储在firebase数据库中,这意味着任何经过身份验证的用户都可以通过输入firebase url.json来查看所有数据?如果整个数据都可以直接查看并在一分钟内复制整个数据,那将是不公平的。有解决办法吗?
[
{
"name": "John",
"Location": "Montreal",
"title": "Electrician",
"rating": "3",
"phone": "5141234567"
},
{
"name": "Paul",
"Location": "Toronto",
"title": "Plumber",
"rating": "1",
"phone": "5142234567"
},
{
"name": “Rita”,
"Location": "New Foundland”,
"title": "Mechanic",
"rating": "4",
"phone": “5143234567”
}
]
解决方案
一旦您希望允许经过身份验证的用户使用客户端 SDK(Web、Android、iOS)在您的实时数据库中进行搜索,您确实需要让他们访问整个技术树(通过适当的安全规则)。
一种可能的解决方法是使用云函数来查询数据库。您可以开发一个可调用的云函数,它从应用程序前端接收搜索参数(例如地理区域),然后根据这些参数查询(即搜索)数据库,最后发回查询结果。
由于 Cloud Functions 以管理权限运行,它将完全绕过安全规则。因此,您可以设置安全规则,使最终用户无法浏览/获取您的整个数据库。
请注意,使用这种方法有一些缺点,特别是在定价、实时方面、本地缓存等方面。下面的文章详细描述了直接查询 Firebase 数据库或使用 Cloud Functions 查询的区别。
推荐阅读
- css - CSS变量不是全局的?
- javascript - DynamoDB PutItem 未等待或执行 finally 块
- python - 带有 React 的 WSGIServer 后端 - 处理长时间运行的脚本
- javascript - 如何在 VueJS 中渲染动态元素?
- docker - 如何使 Jupyter 终端功能齐全?
- java - 打印用户输入 int 的 MSB 和 LSB
- c - 我应该在这里使用哪个同步原语?
- html - window.location.href 和?
- php - 无法在事务的帮助下插入两个不同的表
- c++ - MSVC 中的静态变量链接错误,即使它是在 cpp 文件中创建的