2017-08-23 9 views
0

いくつかのコレクションは、アクセス権やロールが同じユーザだけがアクセスまたは変更できることをどのように文書化していますか?たとえば、認証されたユーザだけがコメントを書くことができます。GraphQLアクセス許可のドキュメント

答えて

1

graphqlのデータを見るためには、基本的にビューアに依存することが有益です。

バックエンドにログインしているユーザーを設定し、フロントエンドコードを現在のユーザーの関数として表示します。

したがって、graphqlリゾルバでは、そのユーザーに関連付けられたデータをフェッチし、そのフィールドの1つがユーザーのアクセス許可になる可能性があります。次に、関連する小道具をフロントエンドフレームワークに渡し、その人に関連するものをレンダリングします。あなたの指定されたケースでは、ユーザが一定レベルの認証を欠いている場合は、コメントボックスの表示を省略することもできます。

2

graphql-java v4.0以降、操作の可視性のためにスキーマを簡単にフィルタリングすることができます。このようにして、アクセス権に基づいて各ユーザーに異なるスキーマを提示し、ユーザーは実際に実行できる操作のみを表示します。それで、すべてが美しく自己文書化するようになります。されている既存の非常に安価な操作から、新しいスキーマを作成する

//create an implementation that limits certain operations based on their name 
//you can also provide a completely custom implementation 
GraphqlFieldVisibility blockedFields = BlockedFields.newBlock() 
       .addPattern("Character.id") 
       .addPattern("Droid.appearsIn") 
       .addPattern(".*\\.hero") // it uses regular expressions 
       .build(); 

//create a role-specific schema based on the global one 
GraphQLSchema schema = GraphQLSchema.newSchema(globalSchema) 
       .fieldVisibility(blockedFields) //apply restrictions for this user 
       .build(); 

それは次のようになります。たとえば、セッションでユーザー/ロール固有のスキーマを保持できます。それぞれの要求に応じて再作成することも大したことではありません。

関連する問題