【问题标题】:Give access to parts of the firebase realtime database according to uid根据 uid 授予对部分 firebase 实时数据库的访问权限
【发布时间】:2016-09-03 15:45:35
【问题描述】:

正如标题所示,我想将数据库不同部分的访问权限授予不同的用户。我只在谷歌官方文档中找到了以下内容:

{
  "rules": {
    "users": {
      "$uid": {
        ".write": "$uid === auth.uid"
      }
    }
  }
}

我想要做的是访问数据库中任意命名的节点。例如,我想让多个用户访问同一个节点,这种方法不起作用。我尝试了以下方法:

{
  "rules": {
    "users": {
      "myNode": {
        ".write": "auth.uid === 1EAwd9b6d9YloPlLpf0tpyztKR12"
      }
    }
  }
}

但它似乎不起作用。

提前感谢您的帮助!

【问题讨论】:

  • 您需要将字符串值放在引号中。另外:如果您希望规则特定于当前用户,请使用auth.uid。所以:".write": "auth.uid === '1EAwd9b6d9YloPlLpf0tpyztKR12'"。我强烈建议您端到端阅读 Firebase 数据库安全指南,因为它包含更多信息:firebase.google.com/docs/database/security
  • @FrankvanPuffelen 我只是通过实验发现了这一点,但无论如何谢谢!另外:我阅读了 Firebase 数据库安全指南,但没有找到解决问题的方法
  • @FrankvanPuffelen 您指出的“$uid”错误只是stackoverflow 问题中的错字。在我的原始代码中,我使用了 ''auth.uid"

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


【解决方案1】:

经过一番实验,我发现错误只是字符串值需要放在引号中。所以正确的代码是:

{
  "rules": {
    "users": {
      "myNode": {
        ".write": "auth.uid === '1EAwd9b6d9YloPlLpf0tpyztKR12'"
      }
    }
  }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-08-04
    • 2017-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-15
    • 2016-06-15
    • 2015-04-24
    相关资源
    最近更新 更多