firebaseのドキュメントの例では、firebaseセキュリティルールの手動アップデートを前提としています。セキュリティルールは、実際のコラボレーションアプリケーションをサポートするためにプログラムでどのように変更できますか?私が検討しているユースケースでは、ユーザーが他のユーザーに選択したデータの共同作業や共有を依頼し、共同作業者へのアクセスを許可/取り消すことができるようにする必要があります。どのようにこれをファイアベースで達成できますか?Firebaseでセキュリティルールをプログラムで変更する方法は?
5
A
答えて
8
実際にセキュリティルールをプログラムで変更しないでください。 コードと考える必要があります。展開時にのみ変更してください。
実際に何ができるのかを変更しようとする場合は、Firebaseのデータに依存するセキュリティルールを作成してください。
たとえば、データへのアクセスを特定のグループのユーザーのみに制限したいとします。グループメンバーシップが変更されるたびにセキュリティルールを変更するのではなく、単にFirebaseにグループを保存し、アクセスを許可する前にセキュリティルールで現在のユーザーがそのグループに属しているかどうかを確認するだけです。
".read" : "root.child('groups').child($groupID).child(auth.userid).exists()"
このように、グループメンバーシップが変更されると、ユーザーは自動的に閲覧が許可されるべきデータへのアクセスが許可されます。
セキュリティルールのより複雑な例については、Firefeedのrules.jsonファイルを参照してください。
0
しかし、動的に追加されたデータセットをどのように処理するのですか?
これは、子の$
ノードを使用して行います。それは次のようになります。ここでは
は私のデータベースは
users
- userIDHere
- name: John Doe
- whatever: who knows
ですそして、あなたがこれを行うことにより、各ユーザーのルールを設定します:
{
"rules": {
"users": {
"$user": {
// whatever rules you want here, and you can reference $user to get the user's id.
}
}
}
}
が、これはあなたが求めていたものであると思います、と希望これは役に立ちます!
関連する問題
- 1. Firebaseのセキュリティルール
- 2. Firebase:コラボレーションアプリケーションのセキュリティルール
- 3. リストに追加できるFirebaseセキュリティルールはありますか?
- 4. データベースを使用していない場合、firebaseでセキュリティルールを変更する必要がありますか?
- 5. プログラムでスタイルコンポーネントを変更する方法
- 6. プログラムでMFCでビューのサイズを変更する方法は?
- 7. ログインしたユーザからのメールを取得する(Firebaseのセキュリティルール)
- 8. firebaseセキュリティルールはいつチェックされますか?
- 9. Firebaseセキュリティルールは許可を拒否しましたか?
- 10. ユーザー権限をプログラムで変更する方法は?
- 11. Eclipse Plugin:プログラムでファイルソースを変更する方法は?
- 12. ASP.NET:GridView Select Button:ボタンのプロパティをプログラムで変更する方法は?
- 13. ASP.Netで生成サイトマップをプログラムで変更する方法C#
- 14. 埋め込みHornetQでポートをプログラムで変更する方法
- 15. Chromeでアドレスバーのフォントサイズをプログラムで変更する方法
- 16. Ruby on Railsで複雑なセキュリティルールを実装する方法
- 17. プログラムでキャンバスの余白を変更する方法
- 18. プログラムでOSxのWiFi状態を変更する方法
- 19. プログラムでWi-Fiスリープポリシーを変更する方法
- 20. WP7:プログラムでリストボックススタイルテンプレートを変更する方法?
- 21. UIViewControllerビューを変更する最善の方法NIBプログラムで
- 22. C#コードをプログラムで解析して変更する方法
- 23. プログラムでデフォルトのオーディオ入力デバイスを変更する方法
- 24. WooCommerce:デフォルトの配送方法をプログラムで変更する
- 25. Drupal 8 - イメージのサイズをプログラムで変更する方法
- 26. rdlcレポートのDataTableをプログラムで変更する方法
- 27. プログラムでテキストのサイズを変更する方法
- 28. UEFIプログラムで起動順序リストを変更する方法
- 29. 'ListPicker'コントロールのプロパティ 'SelectedValue'の値をプログラムで変更する方法
- 30. C#プログラムでDataGridViewの行選択を変更する方法
迅速な回答ありがとうございます。グループを使用して動的に更新されるユーザーを処理することは意味があります。しかし、動的に追加されたデータセットをどのように処理するのでしょうか?たとえば、ユーザーは/ users/userid/projects/projectidの下にプロジェクトを作成し、その特定のプロジェクトの読取りアクセスを共同作業者のグループに許可したいとします。それはFirebaseでどのように達成されますか? – Jarnal
グループ設定は単なる例でした。あなたはグループを持つ必要はありません - あなたは好きなデータに依存することができます。たとえば、データセット自体に「可読」フラグを付けることができます。これをtrueに設定すると、誰でも読み取り可能になります。または、それはそれを使用することを許可されたユーザーの "読み取り可能な"リストを持つことができます。など... –
@AndrewLee、私はより複雑なケースがあります。私はルーム(ブランチ)を動的に作成しています。部屋の作成時にこれらのアクセス権を指定するにはどうすればよいですか?数百万の異なる部屋があることに注意してください。 –