2016-06-30 12 views
2

私は多くの属性を持つアプリケーションを持っていますが、そのうちのいくつかは公開されているものもあれば、デフォルトでは非公開であるものもあります。GraphQL/Relayのプライバシーの扱い

プライベート属性の取得はどのように処理できますか? たとえば、すべてのユーザーの属性を取得しようとすると、すべての公開属性と、プライベート属性のnull-ish値が取得されます(許可されていないエラーメッセージではありません)。

また、これをオーバーライドして、ユーザーがすべてのデータを取得する手間が省けます。

答えて

1

フィールドのプライバシーは、サーバー側で行う必要があります。

ユーザーモデルのグローバル解決機能ですべてのプライベート属性を無効にするか、潜在的にプライベート属性で解決機能を追加することができます。

その後、リレーを使用してすべてを取得します。あなたがのために返却するかを決定します:DARK_DUCKは、すでに述べたように、私はあなたがnull値をチェックし、あなたが望むもの(値がプライベートであることを示すために、例えばロック)を表示するコンポーネント

は、それが

3

を役に立てば幸いあなたのGraphQLサーバー側のスキーマの属性の解決メソッドの特定のユーザー。

ユーザー認証に必要なデータをクッキーに保存します。次に、この認証データをルート値のGraphQLスキーマに渡します。プライベートユーザーデータの解決方法では、アクセス権をチェックして、適切なデータ(nullまたは実際のデータ)を返します。

私はrelayとgraphqlを使って認証と私的なデータを扱う方法に関する小さなサンプルリポジトリを作った。詳細な例については、this fileとposts属性を参照してください。

関連する問題