2016-11-06 6 views
0

私はiOSアプリケーションでFirebaseを使用していますが、サーバーからクライアントに値が送信されないようにしたいと思います。複数のリクエストでFirebaseから値を非表示にする方法iOS

アプリ内のユーザーは、得点に基づいてお互いに表示されます。したがって、5というスコアを持つユーザーには、5というスコアを持つ他のユーザーが表示されます。この値をFirebaseの要求/応答に含めることは望ましくありません。

ここでサーバーを管理できるのは、サーバー上のユーザーがサーバー上のユーザーを検索し、同じスコアを持つユーザーを特定し、クライアントがユーザースコアを受け取ることなく関連ユーザーを返す機能を呼び出すことです。

Firebaseでは、クエリでFirebaseに値を送信する必要があります。つまり、このユーザーのスコアを持つすべてのユーザーを取得する必要があります。

ユーザーのスコアを公開せずにこれを行うにはどうすればよいですか?私はノードの行に沿って何かをしたいです。user_scores私は現在のユーザーのスコアを照会し、このクエリを別のノードusersを使用してクライアントに照会をネストすることなく関連するユーザーを返して、応答?

多くの感謝!

答えて

0

あなたの理解は非常に重要です。実際に変化するパラメータをクライアントに公開することなく、このような「動的な」クエリを作成する方法はありません。

ここでは、2つのアイデアは、あなたが、回避策として使用しようとすることができます:

  1. 「隠すことによるセキュリティ」のバリエーション:代わりに、単一の番号を露出する、推測可能な方法でその値を難読化その目的と他の価値観は不愉快な経験です。それをクライアントと共有します。
    でこのキーでグループ化しておくと、これが子ノードであるフラットリストではなく、セキュリティルールを使用して、ユーザーが自分以外のグループを読み取ることができなくなります。
    (これは数値についても同様であることに注意してください。セキュリティルールがフィルタではありません。)
  2. はるかに関わる戦略では、クエリ静的作ることができます。ユーザごとに一致するユーザのリストを保存し、維持する。そのため、クライアントはUIDに従うパラメータを変更することなく、自分の個人的なリストをロードすることができる。
    (関与動きがたくさんある場合、これはおそらく、本当に現実的ではありません。しかし、それはいくつかのエッジケースに働くかもしれない。)
関連する問題