Symfonyを用いたGraphSQLのアクセス制御
3821 ワード
承認は、ほぼすべてのWebアプリケーションの一部であり、特定のデータへのアクセス制御は、アプリケーションのセキュリティに不可欠です.同様に、GraphSQL APIとOverblog's GraphQL Bundle , これは簡単にできます.
フィールドアクセス制御
すべてのGraphSQL APIには、少なくとも1つのルート型、クエリがあります.ルートタイプは、特定のフィールドに規則を設定することでアクセスを制御したい、最も一般的な場所です.いくつかの例では、ユーザーだけを許可することによって、いくつかの管理関連のクエリへのアクセスを制御することができます
使用
使用
フィールドアクセス制御
すべてのGraphSQL APIには、少なくとも1つのルート型、クエリがあります.ルートタイプは、特定のフィールドに規則を設定することでアクセスを制御したい、最も一般的な場所です.いくつかの例では、ユーザーだけを許可することによって、いくつかの管理関連のクエリへのアクセスを制御することができます
ROLE_ADMIN
へのアクセスまたは許可user
要求されたユーザが現在認証されているユーザか、あるいはROLE_ADMIN
役割これはexpression language フィールド設定オプションの関数resolve
.使用
hasRole
この式言語関数は、バンドルで提供され、自明です-現在認証されているユーザーが引数として提供する役割を持っているかどうかを確認します.Query:
type: object
config:
fields:
activityLog:
type: "[Activity!]!"
access: "@=hasRole('ROLE_ADMIN')"
resolve: "@=resolver('ActivityLog')"
使用
isGranted
この関数はofficial documentation , しかし、あなたが密接に見えるならば、それは実際に存在しますcodebase . 時々、役割をチェックすることは十分でありません、そして、我々は複雑な論理がユーザーにアクセスがあるかどうか決定するのを望みます.これはvoters and isGranted
表現言語機能.Query:
type: object
config:
fields:
user:
type: 'User'
access: "@=isGranted('user_access', args['id'])"
args:
id:
type: 'ID!'
resolve: "@=resolver('User', [args['id']])"
あなたが質問をするか、コメントまたは経験があるならば、あなたは共有したいです.Reference
この問題について(Symfonyを用いたGraphSQLのアクセス制御), 我々は、より多くの情報をここで見つけました https://dev.to/bornfightcompany/access-control-in-graphql-using-symfony-ioテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol