Access Control
Verleen gedetailleerde toegang tot het schema (op basis van of de gebruiker is ingelogd, een bepaalde rol of bevoegdheid heeft, of op basis van IP-adres), om te beheren wie toegang heeft tot welke gegevens.

Click to watch tutorial video - 08:04
Definieer Toegangscontrolelijsten om gedetailleerde toegang tot de API voor je gebruikers te beheren.
Toegangscontrolelijsten
Met deze extensie kun je Toegangscontrolelijsten aanmaken om te beheren wie toegang heeft tot de verschillende elementen (operaties, velden en directives) van het GraphQL-schema, met behulp van de volgende regels:
- Toegang uitschakelen
- Toegang alleen verlenen als de gebruiker is ingelogd of uitgelogd
- Toegang alleen verlenen als de gebruiker een bepaalde rol heeft
- Toegang alleen verlenen als de gebruiker een bepaalde bevoegdheid heeft
- Toegang alleen verlenen als de bezoeker afkomstig is van een toegestaan IP-adres

We geven aan aan welke regels voldaan moet worden om toegang te krijgen tot bepaalde schema-elementen â waaronder operaties, velden, globale velden en directives.
Bij het uitvoeren van een GraphQL-query worden, als deze een van de geselecteerde schema-elementen uit de Toegangscontrolelijst bevat, de gekozen regels geëvalueerd.
Als een regel niet wordt nageleefd, wordt de toegang tot die operatie, dat veld of die directive geweigerd.
Publieke/Privémodus voor het Schema
Wanneer toegang tot een veld of directive wordt geweigerd via Toegangscontrole, kan de API zich op 2 manieren gedragen:
Publieke modus: De velden in het schema zijn zichtbaar, en wanneer de vereiste toestemming ontbreekt, krijgt de gebruiker een foutmelding met een beschrijving van de reden voor de afwijzing. Dit gedrag zorgt ervoor dat de metadata van het schema altijd beschikbaar is.
Privémodus: Het schema is aangepast aan elke gebruiker en bevat alleen de velden die voor hem of haar beschikbaar zijn. Wanneer je probeert een verboden veld te benaderen, meldt de foutmelding dat het veld niet bestaat. Dit gedrag maakt de metadata van het schema alleen beschikbaar voor gebruikers die er toegang toe hebben.

In de publieke modus kan de respons er bijvoorbeeld zo uitzien:
{
"errors": [
{
"message": "You must have role 'author' to access field 'title' for type 'Post'",
"locations": [
{
"line": 86,
"column": 3
}
]
}
]
}Terwijl in de privémodus de respons er zo uit kan zien:
{
"errors": [
{
"message": "There is no field 'title' on type 'Post'",
"locations": [
{
"line": 86,
"column": 3
}
]
}
]
}