1

私は Firebase を初めて使用し、動的に作成されたグループによってユーザーをグループ化するセキュリティ ルールを設定しようとしていました。また、ユーザーが同じグループのすべてのコンテンツを読み取れるようにしたいが、他のグループは読み取れないようにしたい.

新しいユーザーを作成し、プッシュを使用していくつかのグループを割り当てると、次のようなデータが得られます。

{
"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/ でフィドラーとして追加しました

現時点で私が望んでいるのは 2 つの簡単なことです: 1> ユーザーとして、自分の名前を編集できる必要があります 2> ボタンをクリックすると、グループ内のすべてのユーザーの名前を取得できる必要があります。

フィドラーのようにコードを試したところ、権限の問題が発生しています。

私が間違っていることを理解できれば素晴らしいことです。

4

1 に答える 1

0

$userid問題は、の代わりに使用していることだと確信しています$uid。したがって、これを変更すると機能するはずです。$uidセキュリティルールで使用しています。

于 2015-07-08T13:30:47.403 に答える