Firebase组安全规则配置

时间:2015-07-08 12:48:13

标签: firebase firebase-security firebase-authentication

我是Firebase的新手,我正在尝试设置安全规则,我希望用户可以按动态创建的组进行分组。我还希望用户能够阅读同一组中的所有内容,而不是其他组。

当我创建新用户并使用push为他们分配一些组时,我得到如下数据:

{
"groups" : {
 "default" : {
  "-Jtcdyniz1yVwNQCGSAR" : {
    "user" : "simplelogin:5"
  },
  "-Jtd114KNQ-rqh6-rlnI" : {
    "user" : "simplelogin:7"
  }
}
},
"users" : {
"simplelogin:5" : {
  "group" : "default",
  "name" : "123"
},
"simplelogin:6" : {
  "group" : "default1",
  "name" : "1"
},
"simplelogin:7" : {
  "group" : "default",
  "name" : "23"
}
}
}

有人可以帮忙吗?如何设置身份验证规则?我尝试了以下但它似乎没有用......

    {
        "rules": {

            "users" : {
                "$userid" : {
                  ".read" : "data.child('users').child($userid).child('group').val() === data.child('users').child(auth.id).child('group').val()",
                  ".write" : "$userid === auth.uid"
                  }
              }
        }
    }

我认为这应该是相当简单的用例,但不幸的是没有得到太多帮助。

我发现的任何帖子都有直接用户在一个组中而不是一个随机的唯一字符串的子孙。

编辑:

我尝试使用以下编辑过的规则:

    {
        "rules": {
            "groups" : {
                ".read" : "true",
                ".write" : "true"
              },
            "users" : {
                "$userid" : {
                  ".read" : "data.child('group').val() === root.child('users').child(auth.id).child('group').val()",
                  ".write" : "$userid === auth.uid"
                  }
              }   
        }
    }

但我得不到多少帮助。

对于代码,我已将其添加为:http://jsfiddle.net/digish_gabhawala/ytwmokg0/

的小提琴手

目前我想要的是两件简单的事情: 1 GT;作为用户,我应该可以编辑我的名字 2 - ;当我点击按钮时,我应该能够获得我组中所有用户的名字。

当我在fiddler中尝试代码时,我遇到了权限问题。

如果我能得到我做错的话,那就太好了。

1 个答案:

答案 0 :(得分:0)

我很确定问题是您使用的是$userid而不是$uid。所以改变它应该使它工作。我在我的安全规则中使用$uid