【问题标题】:How to only allow one admin user to write Firebase Database?如何只允许一个管理员用户编写 Firebase 数据库?
【发布时间】: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 下。
  • 在下面回答。如果这不起作用,请分享重现问题的最少代码:允许编写的代码,您不想被允许。

标签: firebase firebase-realtime-database firebase-authentication firebase-security


【解决方案1】:

这应该可行:

{
  "rules": {
    ".read": true,
    ".write": "auth.uid === 'dJrGShfgfd2'"
  }
}

世界上每个人都可以读取数据,但只有 UID 为dJrGShfgfd2(和processes with administrative access)的用户才能写入数据。

【讨论】:

  • 您能否仅在客户端完全执行此操作,这意味着您可以在没有后端的情况下拥有付费会员与会员系统。如果用户付费成为会员,我将如何处理。
  • 您可以做的是检查服务器上的变量是否表明他们已经付款。之后,您可以在权限上添加规则以检查该变量是否为true 表示用户付费或false 表示用户未付费
  • 如何使用电子邮件而不是 uid 来做到这一点?
猜你喜欢
  • 2021-06-24
  • 2020-03-31
  • 2021-02-11
  • 1970-01-01
  • 2020-12-24
  • 1970-01-01
  • 2020-11-22
  • 2018-02-04
  • 1970-01-01
相关资源
最近更新 更多