使用Firebase

时间:2015-12-13 15:56:17

标签: firebase

假设你有一个firebase数据库,其中包含要在webapp中显示的新闻文章。在顶层,我们使用Firebase身份验证来确保用户首先可以访问新闻文章。

但是不同的人可以看到不同的文章(新闻数据库中的项目)。例如,我应该将用户放在一个名为" management"有权访问其他用户无法查看的文章。

如何使用Firebase实现这一目标? (Web的版本)

示例数据库:

{
  "newsfeed" : {
"1001" : {
  "body" : "Lots of text here for the body of the article.",
  "header" : "This is an open article",
  "leadParagraph" : "With a lead paragraph and lots of content",
  "permissions" : {
    "All" : false,
    "Group11" : true,
    "Management" : true
  }
},
"1002" : {
  "Permissions" : {
    "All" : true
  },
  "body" : "Content here",
  "header" : "Testarticle for everyone",
  "leadParagraph" : "Everyone can read this one"
}

}     }

所以问题不在于如何限制用户访问整个" newsfeed",而是如何在项目级别单独编辑访问权限。在上面的示例中,所有用户都可以阅读项目1002,而只有被标记为组成员的用户才能阅读项目1002和管理"和/或" Group11"应该能够阅读项目1001。

动态规则是否可以实现?如果我必须为每个项目创建一个新规则,那么规则的数量是否有限制?

1 个答案:

答案 0 :(得分:1)

如果您还没有,我会阅读Security Quickstart指南。它很好地解释了Firebase安全规则的工作原理。

如果您遇到问题,我建议您提供一个组列表,其中每个组都有该组中用户的uid。例如:

{
  "groups" : {
    "Group11" : {
      "<uid1>": true,
      "<uid2>": true
    },
    "Management" : {
      "<uid1>": true,
      "<uid2>": true
    }
  }
}

如果用户是某个组的成员,请将他们的uid添加到该组的成员列表中。然后在您的规则中,您可以.read检查尝试读取数据的用户是否在任何允许的组中使用了他们的uid。