这个问题在这里已有答案:
假设你有一个firebase数据库,其中包含要在webapp中显示的新闻文章 . 在顶层,我们使用Firebase身份验证来确保用户首先可以访问新闻文章 .
但是不同的人可以看到不同的文章(新闻数据库中的项目) . 例如,我放入名为“management”的组中的用户是否有权查看其他用户无法查看的某些文章 .
如何使用Firebase实现这一目标? (网络版)
示例数据库:
{
"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"
}
}}
所以问题不在于如何限制用户访问整个“新闻源”,而是如何在项目级别单独编辑访问权限 . 在上面的示例中,所有用户都可以阅读项目1002,而仅被标记为组“管理”和/或“组11”的成员的用户应该能够阅读项目1001 .
动态规则是否可以实现这一点?如果我必须为每个项目创建一个新规则,那么规则的数量是否有限制?
1 回答
如果您还没有,我会阅读Security Quickstart指南 . 它很好地解释了Firebase安全规则的工作原理 .
如果您遇到问题,我建议您提供一个组列表,其中每个组都有该组中用户的uid . 例如:
如果用户是组的成员,请将他们的uid添加到组的成员列表中 . 然后在您的规则中,您可以使
.read
检查尝试读取数据的用户是否在任何允许的组中使用了他们的uid .