Access Control
Gewähre granularen Zugriff auf das Schema (basierend darauf, ob der Nutzer eingeloggt ist, eine Rolle oder Berechtigung hat, oder per IP), um zu verwalten, wer auf welche Daten zugreifen kann.

Click to watch tutorial video - 08:04
Definiere Zugriffssteuerungslisten, um den granularen Zugriff auf die API für deine Nutzer zu verwalten.
Zugriffssteuerungslisten
Diese Erweiterung ermöglicht es uns, Zugriffssteuerungslisten zu erstellen, um zu verwalten, wer auf die verschiedenen Elemente (Operationen, Felder und Direktiven) des GraphQL-Schemas zugreifen kann, mithilfe der folgenden Regeln:
- Zugriff deaktivieren
- Zugriff nur gewähren, wenn der Nutzer eingeloggt oder ausgeloggt ist
- Zugriff nur gewähren, wenn der Nutzer eine bestimmte Rolle hat
- Zugriff nur gewähren, wenn der Nutzer eine bestimmte Berechtigung hat
- Zugriff nur gewähren, wenn der Besucher von einer erlaubten IP kommt

Wir geben an, welche Regeln erfüllt sein müssen, um auf welche Schema-Elemente zuzugreifen – aus Operationen, Feldern, globalen Feldern und Direktiven.
Wenn eine GraphQL-Abfrage ausgeführt wird und eines der in der Zugriffssteuerungsliste ausgewählten Schema-Elemente enthält, werden die gewählten Regeln ausgewertet.
Wenn eine Regel nicht erfüllt ist, wird der Zugriff auf diese Operation, dieses Feld oder diese Direktive verweigert.
Öffentlicher/Privater Schema-Modus
Wenn der Zugriff auf ein Feld oder eine Direktive über die Zugriffssteuerung verweigert wird, gibt es 2 Verhaltensweisen der API:
Öffentlicher Modus: Die Felder des Schemas sind sichtbar, und wenn die Berechtigung nicht erfüllt ist, erhält der Nutzer eine Fehlermeldung mit einer Beschreibung, warum die Berechtigung abgelehnt wurde. Dieses Verhalten macht die Metadaten des Schemas immer verfügbar.
Privater Modus: Das Schema wird für jeden Nutzer individuell angepasst und enthält nur die für ihn oder sie verfügbaren Felder. Wenn versucht wird, auf ein verbotenes Feld zuzugreifen, gibt die Fehlermeldung an, dass das Feld nicht existiert. Dieses Verhalten macht die Metadaten des Schemas nur für die Nutzer sichtbar, die darauf zugreifen können.

Im öffentlichen Modus erhalten wir beispielsweise diese Antwort:
{
"errors": [
{
"message": "You must have role 'author' to access field 'title' for type 'Post'",
"locations": [
{
"line": 86,
"column": 3
}
]
}
]
}Während wir im privaten Modus diese Antwort erhalten könnten:
{
"errors": [
{
"message": "There is no field 'title' on type 'Post'",
"locations": [
{
"line": 86,
"column": 3
}
]
}
]
}