如何只允许一个管理员用户编写 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?

来自已经过身份验证的帐户的Firebase createUserWithEmailAndPassword()

只允许从 Firebase 中的服务帐户写入?

如何阻止Firebase用户登录到错误的登录屏幕