【问题标题】:Firebase database rules for particular user特定用户的 Firebase 数据库规则
【发布时间】:2017-12-18 10:26:00
【问题描述】:

我有一个数据库,我需要对所有用户和 在用户运行的应用程序脚本中调用时的写入权限 = 'firebaseowner@gmail.com'

我的火力基地结构是

ABC/AAA1/date 
ABC/AAA2/date 
ABC/AAA3/date 
ABC/AAA4/date 

规则是:

{
  "rules": {
      ".read": true,
      ".write": false,
    }
}

当用户“firebaseowner@gmail.com”在应用程序脚本中调用时,我如何制定规则以允许写入。

我使用https://sites.google.com/site/scriptsexamples/new-connectors-to-google-services/firebase/reference 插入数据

【问题讨论】:

  • 保留空规则(删除规则)
  • 默认规则是什么?

标签: firebase google-apps-script firebase-realtime-database firebase-authentication firebase-security


【解决方案1】:

你应该检查auth variable。

定义安全规则,仅允许通过此电子邮件地址firebaseowner@gmail.com 对所有位置进行写访问:

{
  "rules": {
    ".read": true,
    ".write": "auth != null && auth.token.email == 'firebaseowner@gmail.com'"
  }
}

定义安全规则,仅允许通过此电子邮件地址 firebaseowner@gmail.com 对位置 /users 进行写访问:

{
  "rules": {
    ".read": true,
    "users": {
      ".write": "auth != null && auth.token.email == 'firebaseowner@gmail.com'"
    }
  }
}

【讨论】:

  • 我的 firebase 结构没有用户/ - 允许 .read 为 true 是否有必要让其他用户读取整个数据库?
  • 您可以保护您的 firebase 数据库并允许对某个位置进行读/写访问,/users 是该位置,您可以更改/users 任何您想要的内容,例如/threads、/ABC等等。
  • .read / .write 是内部关键字,这也很有帮助firebase.google.com/docs/reference/security/database/…
  • 我将 AAA1、AAA2 保存为电子邮件的 base 64 值。是否可以在 Utilities.base64encode($email) 之类的规则中实现?
  • 规则只提供了一组有限的方法,我认为它没有 base64 编码/解码。如果您想包含在安全规则中,您应该将原始数据存储在某个地方。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-29
  • 2017-07-15
相关资源
最近更新 更多