Firebase:パブリック/プライベートユーザーデータを構造化する方法

ジェイコブフィリップス

当然、私のデータベースのユーザーは、公的にアクセスできる情報や、自分だけが見るべきその他の情報を持っています。これを実装するための2つの異なる方法を検討しています。

オプション1:持っている/users/$uidだけで、そのユーザーが読み取り可能としている/users/$uid/profile誰にでも読めるよう。

オプション2:キープ/users/$uidのみ、そのユーザーが読めると持って/profiles/$uid公開されていることを。これは、よりフラットなデータ構造の推奨事項に従いますが、この場合にどのように優れているかはわかりません。

フランク・ヴァン・パッフェレン

「よりフラットな」構造が優れている理由を理解する最も簡単な方法は、それをどのように保護し、次にどのように機能を実装するかを調べることです。

最初の構造は次のとおりです。

users: {
  uidOfJacob: {
    stackId: 884522,
    ssn: "999-99-9999",
    profile: {
      displayName: "Jacob Philips"
    }

  },
  uidOfPuf: {
    stackId: 209103,
    ssn: "999-99-9999",
    profile: {
      displayName: "Frank van Puffelen"
    }
  }
}

あなたはそれを次のように保護します:

{
  "rules": {
    "users": {
      "$uid": {
        ".read": "auth.uid == $uid",
        ".write": "auth.uid == $uid"
        "profile": {
          ".read": true
        }
      }
    }
  }
}

公開情報を持つ主な理由の1つは、その情報のリストを表示できることです。JavaScriptの場合:

ref.child('users').child(???).child('profile').on('child_added'...

何を入れるので、これは機能しません???Firebaseの操作では、1つの場所からリスト全体を読み取ることができる必要があり、ユーザーはその場所全体(個々の子ノードだけでなく)に対する読み取り権限を持っている必要があります。

公開情報と個人情報を分離するようにデータを構造化すると、次のようになります。

users: {
  uidOfJacob: {
    stackId: 884522,
    ssn: "999-99-9999",
    profile: {
      displayName: "Jacob Philips"
    }

  },
  uidOfPuf: {
    stackId: 209103,
    ssn: "999-99-9999",
    profile: {
      displayName: "Frank van Puffelen"
    }
  }
},
"profile": {
  uidOfJacob: {
    displayName: "Jacob Philips"
  },
  uidOfPuf: {
    displayName: "Frank van Puffelen"
  }
}

あなたはそれを次のように保護します:

{
  "rules": {
    "users": {
      "$uid": {
        ".read": "auth.uid == $uid",
        ".write": "auth.uid == $uid"
      }
    },
    "profiles": {
      ".read": true,
      "$uid": {
        ".write": "auth.uid == $uid"
      }
    }
  }
}

パブリックユーザープロファイルのリストを取得しないようにするには、次のようにします。

ref.child('profiles').on('child_added'...

誰もがの読み取り権限を持っているため、これは機能しprofilesます。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

パブリックユーザーがプライベートデータをアップロードするためのAzure製品はどれですか?

分類Dev

Firebaseデータベースでプライベートリソースのパブリック共有リンクを作成する方法

分類Dev

PolymerアプリのFirebaseデータベース構造-パフォーマンスとユーザー/グループ/パブリックアクセス

分類Dev

タイプスクリプトの「プロパティ '名前'はタイプ 'ユーザー'でプライベート」を理解する方法

分類Dev

Firebaseデータの構造化(ベストプラクティス)

分類Dev

ユーザーフォーム-プライベートサブからパブリックサブに戻る

分類Dev

firebase_authのユーザー情報を他のデータベースにアップロードされたファイルとリンクする方法

分類Dev

プライベートユーザーからユーザーへのインタラクションをフィルタリングする方法は?

分類Dev

プライベート構造体データメンバーからC ++クラスパブリックメンバー関数にアクセスする

分類Dev

Pythonで構造化データファイルをプロットする方法は?

分類Dev

Cライブラリ(GTK + 3)のコールバックとして構造化データ型のプロシージャを使用する

分類Dev

MYSQLユーザーテーブルの構成IPをパブリックIPにバインドする方法

分類Dev

Reactで、ユーザーのクリップボード貼り付けイベントにバインドしてデータを解析する方法は?

分類Dev

アセットパイプライン(ペーパークリップ)からの画像をRailsデータベースにシードする方法は?

分類Dev

クリックイベントでブートストラップv4が使用するデザインパターン

分類Dev

ファブリックv1.3.0でプライベートデータを有効にする方法

分類Dev

Firebase Firestoreにユーザーデータを保持するためのベストプラクティス?

分類Dev

クリックストリームデータからユーザーパスを作成する方法

分類Dev

データを失うことなく、異なるパブリッシャーでリアクティブパイプラインを構築する方法は?

分類Dev

ユーザーがサインアウトした後、CloudFirestoreからユーザーデータをクリーンアップする方法

分類Dev

プライベートクラスをパラメータとするパブリック関数

分類Dev

ブラウザベースのユーザー/パスを必要とするネットワークにデバイスを接続します

分類Dev

VBA:パブリックオブジェクトモジュールのイベントパラメータとしてのユーザー定義タイプ

分類Dev

Pythonデータ前処理パイプラインのコードを構造化する方法(本番用)

分類Dev

リザーブイベントと一緒にカスタムパラメータをFirebaseアナリティクスに送信する方法

分類Dev

データテーブルのスパークラインプロットにラベルを追加する

分類Dev

イベントドリブンマイクロサービスで、プライベートデータベースを古いデータで更新する方法

分類Dev

パブリックS3オブジェクトをプライベートバケットに作成するようにユーザーを制限する方法

分類Dev

Laravelパスポートクライアントアプリでアクセストークンを使用してユーザーデータを取得する

Related 関連記事

  1. 1

    パブリックユーザーがプライベートデータをアップロードするためのAzure製品はどれですか?

  2. 2

    Firebaseデータベースでプライベートリソースのパブリック共有リンクを作成する方法

  3. 3

    PolymerアプリのFirebaseデータベース構造-パフォーマンスとユーザー/グループ/パブリックアクセス

  4. 4

    タイプスクリプトの「プロパティ '名前'はタイプ 'ユーザー'でプライベート」を理解する方法

  5. 5

    Firebaseデータの構造化(ベストプラクティス)

  6. 6

    ユーザーフォーム-プライベートサブからパブリックサブに戻る

  7. 7

    firebase_authのユーザー情報を他のデータベースにアップロードされたファイルとリンクする方法

  8. 8

    プライベートユーザーからユーザーへのインタラクションをフィルタリングする方法は?

  9. 9

    プライベート構造体データメンバーからC ++クラスパブリックメンバー関数にアクセスする

  10. 10

    Pythonで構造化データファイルをプロットする方法は?

  11. 11

    Cライブラリ(GTK + 3)のコールバックとして構造化データ型のプロシージャを使用する

  12. 12

    MYSQLユーザーテーブルの構成IPをパブリックIPにバインドする方法

  13. 13

    Reactで、ユーザーのクリップボード貼り付けイベントにバインドしてデータを解析する方法は?

  14. 14

    アセットパイプライン(ペーパークリップ)からの画像をRailsデータベースにシードする方法は?

  15. 15

    クリックイベントでブートストラップv4が使用するデザインパターン

  16. 16

    ファブリックv1.3.0でプライベートデータを有効にする方法

  17. 17

    Firebase Firestoreにユーザーデータを保持するためのベストプラクティス?

  18. 18

    クリックストリームデータからユーザーパスを作成する方法

  19. 19

    データを失うことなく、異なるパブリッシャーでリアクティブパイプラインを構築する方法は?

  20. 20

    ユーザーがサインアウトした後、CloudFirestoreからユーザーデータをクリーンアップする方法

  21. 21

    プライベートクラスをパラメータとするパブリック関数

  22. 22

    ブラウザベースのユーザー/パスを必要とするネットワークにデバイスを接続します

  23. 23

    VBA:パブリックオブジェクトモジュールのイベントパラメータとしてのユーザー定義タイプ

  24. 24

    Pythonデータ前処理パイプラインのコードを構造化する方法(本番用)

  25. 25

    リザーブイベントと一緒にカスタムパラメータをFirebaseアナリティクスに送信する方法

  26. 26

    データテーブルのスパークラインプロットにラベルを追加する

  27. 27

    イベントドリブンマイクロサービスで、プライベートデータベースを古いデータで更新する方法

  28. 28

    パブリックS3オブジェクトをプライベートバケットに作成するようにユーザーを制限する方法

  29. 29

    Laravelパスポートクライアントアプリでアクセストークンを使用してユーザーデータを取得する

ホットタグ

アーカイブ