【问题标题】:Creating firebase rule to authorize write permission to owner and read permission to provided email [closed]创建firebase规则以授权所有者的写入权限和提供的电子邮件的读取权限[关闭]
【发布时间】:2017-01-26 04:27:45
【问题描述】:

我有如下数据结构,如果需要,我准备重新构建以实现我的目标。 我希望所有者能够读取或写入,并且在“sharedWithEmail”键中具有邮件 ID 的用户能够读取列表。

"root_node" : {
  "firebaseUid1" : {
    "-Kb5L4zvfgscWdDC9utF" : {
      "data1" : 1,
      "data2" : "abcd",
      "sharedWithEmail" : "abc@gmail.com",
      "userMail" : "user1@gmail.com"
    },
    "-Kb5sddvfgscWdDC9utF" : {
      "data1" : 2,
      "data2" : "abcd",
      "sharedWithEmail" : "123@gmail.com",
      "userMail" : "user1@gmail.com"
    },
    "-Kb5sddvfgscWdDC9utF" : {
      "data1" : 3,
      "data2" : "abcd",
      "sharedWithEmail" : "blabla@gmail.com",
      "userMail" : "user1@gmail.com"
    }
  }
  {
  "firebaseUid2" : {
    "-Kb5L4zvfgscWdDC9utF" : {
      "data1" : 1,
      "data2" : "abcd",
      "sharedWithEmail" : "1@gmail.com",
      "userMail" : "user2@gmail.com"
    },
    "-Kb5sddvfgscWdDC9utF" : {
      "data1" : 2,
      "data2" : "abcd",
      "sharedWithEmail" : "1@gmail.com",
      "userMail" : "user2@gmail.com"
    },
    "-Kb5sddvfgscWdDC9utF" : {
      "data1" : 3,
      "data2" : "abcd",
      "sharedWithEmail" : "b2@gmail.com",
      "userMail" : "user2@gmail.com"
    }

【问题讨论】:

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


    【解决方案1】:

    在您当前的结构中,您可以测试用户是否有权访问特定帖子,因为它已与他们的电子邮件共享:

    {
      "rules": {
        "root_node": {
          "$uid": {
            "$postid": {
              ".read": "auth.token.email === child('sharedWithEmail').val()"
            }
          }
        }
      }
    }
    

    但使用这种结构,无法测试用户是否有权访问特定用户的所有帖子,因为您无法搜索您定义安全规则的路径下的节点。

    【讨论】:

    • 谢谢弗兰克的回答,所以你能建议我用什么结构来实现这个功能,只有所有者被允许写入和阅读,并且用户在“sharedWithEmail”键中的邮件也能够阅读。
    • 这就是这个答案所显示的。如果这不是您想要的,请用不同的词描述问题。或者更好:显示minimal code that reproduces the problem:什么写操作应该成功,什么操作应该失败?
    • 我的应用程序具有通过提供邮件 ID 与任何人共享项目的功能。同时我也希望共享它的人应该可以访问这个项目。现在,请建议我如何实现这种行为。非常感谢您的努力。
    • 这就是我的答案中的规则完成的,不是吗?你试过了吗?什么操作产生了不想要的结果?
    • 这似乎不起作用,如果您有任何替代解决方案,请告诉我。
    猜你喜欢
    • 1970-01-01
    • 2020-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多