質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Firebase

Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。

Firebase Authentication

Firebase Authenticationは、Firebaseを利用したユーザーの認証機能です。バックエンドサービス、SDK、アプリでのユーザー認証に使用できるUIライブラリが用意されています。

Q&A

0回答

414閲覧

RealtimeDatabaseのセキュリティルール設定 下位のデータの制限を緩めたい

a.takagi

総合スコア4

Firebase

Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。

Firebase Authentication

Firebase Authenticationは、Firebaseを利用したユーザーの認証機能です。バックエンドサービス、SDK、アプリでのユーザー認証に使用できるUIライブラリが用意されています。

0グッド

0クリップ

投稿2021/02/16 19:50

RealtimeDatabaseのルール設定においてreadやwriteの設定はカスケード処理されるため、上位の親ノードに対して設定された内容が子をオーバーライドすることは理解しました。
しかし、ではどうやって権限の絞り込みを行うのでしょうか。
例えばチャットアプリを作成するとして、各ユーザーは部屋を建てる事ができ、ログインしているユーザーは自由に部屋に入りメッセージを残すことができる一方、部屋の設定は部屋を立てたユーザーのみが行うとします。
読み出し権限を省略して書くとき

{  "rule"{ "Rooms":{ "$roomID":{ messages:{ ".write":"auth.uid!=null" }, settings:{ ".write":"data.child('roomMaster').val()==auth.uid" } } } } }

のようになると思います。
ここで部屋を削除する機能を作成しようとすると$roomIDにsettingsと同じような書き込み権限を記入する必要がありますが、これは上記カスケード処理を引き起こし、一般ユーザーのメッセージ投稿ができなくなってしまいます。

{  "rule"{ "Rooms":{ "$roomID":{ ".write":"data.child('settings').child('roomMaster').val()==auth.uid" messages:{ ".write":"auth.uid!=null"//無効 }, settings:{ ".write":"data.child('roomMaster').val()==auth.uid" } } } } }

このようなケースでどのような設定を行えばよいのでしょうか。
1.データ構造がまずい
2.そもそもデータ自体を削除せずroomIdListみたいなものを操作するべき
なども検討しましたがいまいち確証がなく困っています。

よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問