1

単純な問題のように思える問題で頭を壁にぶつけたように見えた後、助けを求めるのが最善だと思いました。

ユーザーが簡単なログインを使用して認証できるようにする EmberFire アプリケーションを作成しています。認証されると、ユーザーは後で取得するために特定のアイテムを保存できます。

私は次のように定義されたモデルを持っています:

ユーザー:

export default DS.Model.extend({
  firstName: DS.attr('string'),
  lastName: DS.attr('string'),
  dateOfBirth: DS.attr('date'),
  registeredAt: DS.attr('date'),
  compentencies: DS.hasMany('competency', { async: true })
});

能力:

export default DS.Model.extend({
  title: DS.attr('string'),
  endDate: DS.attr('date'),
  user: DS.belongsTo('user', { async: true })
});

これらは、私が望むように非正規化された形でfirebase dbに保存されます。

ここに画像の説明を入力 私の問題は、永続化されたデータの取得時に発生します。コンピテンシーを特定のユーザーに限定する方法がわかりません。

FireBase でルールがカスケードされる方法が、このフォームで可能かどうかはわかりませんが、各コンピテンシーを各ユーザー ノードの下に埋め込まれたフォームに格納する必要があるのは適切ではないようです。

this.store.find('competency') を使用してすべての「コンピテンシー」モデルへの読み取りアクセスを許可し、クライアントでそれらをフィルター処理できることはわかっていますが、それは私が期待するセキュリティに適合しません。

どんな助けでも大歓迎です。

ライアン

4

1 に答える 1

2

コンピテンシーが現在ログインしているユーザーに属している場合にのみ、コンピテンシーへの読み取りアクセスを許可するには、次を使用できます$competencyId(「competencyId」を任意の有効な文字列に置き換えることができます)。を使用すると、ツリー全体へのアクセスを許可するの$competencyIdではなく、特定のノードへのアクセスが制限されます。competencies/

"rules": {
  "competencies": {
    "$competencyId": {
      ".read": "data.child('user').val() === auth.uid"
    }
  }
}
于 2016-03-01T19:16:01.237 に答える