Firebase JSON安全和阵列

时间:2013-04-11 15:30:39

标签: firebase firepad

我们想在我们的(主要是非Firebase托管的)项目中使用Firepad,但我们遇到了一些麻烦,找出解决问题的最佳方法。

基本上,我们有很多用户,每个用户都可以是许多组的成员。这些“组”每个都有自己的Firepad,用户可以编辑。我们已经使用MySQL开发了一个深度开发的数据库结构,并且现在不想将我们的用户数据迁移到Firebase中,所以我们认为我们会更有创意。

我们不希望用户能够编辑他们不属于的组的Firepad。因此,作为我们的身份验证令牌的一部分,我们认为我们会尝试发送用户ID和他们所属的组列表。然后,使用Firebase JSON安全系统,我们可以验证当前正在编辑的Firepad是否在用户所属的组列表中。

问题是,JSON系统似乎不接受很多命令。没有indexOf,我无法在hasChild变量上调用auth

我们如何确保用户只能编辑他们所属群组的Firepad,而无需将所有数据迁移到Firebase? (或者维护数据库的两个副本 - 一个在MySQL上,一个在Firebase上)

1 个答案:

答案 0 :(得分:10)

这里的诀窍是使用一个对象而不是一个数组来存储组(我知道这有点尴尬。我们会尝试使这更容易/更直观)。因此,在您的身份验证令牌中,您可以存储以下内容:

{ userid: 'blah', groups: { 'group1': true, 'group2': true, ... } }

然后在您的安全规则中,您可以使用以下内容:

{
    ...
    "$group": {
        ".read": "auth.groups[$group] == true",
        ".write": "auth.groups[$group] == true"
    }
}

然后用户将具有对/ groups /< group>的读/写访问权限。仅当< group>是他们的身份证明。