如何只允许一个管理员用户编写 Firebase 数据库?
Posted
技术标签:
【中文标题】如何只允许一个管理员用户编写 Firebase 数据库?【英文标题】:How to only allow one admin user to write Firebase Database? 【发布时间】:2017-06-05 22:10:29 【问题描述】:我正在尝试建立一个只有我可以编写的 Firebase 数据库。所以没有用户有权写任何东西。但是每个人都可以阅读它。
但是,我无法为其设置规则。我有一个使用电子邮件/密码登录创建的管理员用户,我知道它的 UID。假设我的 UID 是:dJrGShfgfd2
我尝试了这两种方法,但它们不允许我写入数据库。
"rules":
"events":
".read": true,
".write": "auth.uid === 'dJrGShfgfd2'"
.
"rules":
"users":
"$user_id":
".read" : true,
".write": "$user_id === 'dJrGShfgfd2'"
那么如何只允许一个具有特定 UID 的用户向数据库写入任何内容?
【问题讨论】:
第一个sn-p里的规则应该没问题。他们应该为管理员授予对events
路径的写入权限,并为其他人授予读取权限。
等等,我的数据库中没有事件路径或其他内容。如何定义适用于任何地方的写入规则?
您的规则层次结构中有events
。如果数据库中没有这样的键,请将其删除并将.read
和.write
上移到rules
下。
在下面回答。如果这不起作用,请分享重现问题的最少代码:允许编写的代码,您不想被允许。
【参考方案1】:
这应该可行:
"rules":
".read": true,
".write": "auth.uid === 'dJrGShfgfd2'"
世界上每个人都可以读取数据,但只有 UID 为dJrGShfgfd2
(和processes with administrative access)的用户才能写入数据。
【讨论】:
您能否仅在客户端完全执行此操作,这意味着您可以在没有后端的情况下拥有付费会员与会员系统。如果用户付费成为会员,我将如何处理。 您可以做的是检查服务器上的变量是否表明他们已经付款。之后,您可以在权限上添加规则以检查该变量是否为true
表示用户付费或false
表示用户未付费
如何使用电子邮件而不是 uid 来做到这一点?以上是关于如何只允许一个管理员用户编写 Firebase 数据库?的主要内容,如果未能解决你的问题,请参考以下文章
Flutter & Firebase - 如何只允许每台设备有 1 个帐户
如何只允许我的应用在没有登录的情况下访问 firebase?