7

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

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

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

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

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

4

1 回答 1

10

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

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

然后在你的安全规则中,你可以有类似的东西:

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

然后,仅当 <group> 在其身份验证令牌中时,用户才具有对 /groups/<group> 的读/写访问权限。

于 2013-04-11T15:57:57.563 回答