Diese Dokumentation wurde automatisch von KI übersetzt.
ACL (Access Control List) wird zur Steuerung von Berechtigungen für Ressourcenoperationen verwendet. Sie können Rollen Berechtigungen zuweisen oder Berechtigungen direkt festlegen, indem Sie Rollenbeschränkungen umgehen. Das ACL-System bietet einen flexiblen Mechanismus zur Berechtigungsverwaltung, der verschiedene Methoden wie Berechtigungs-Snippets, Middleware und Bedingungsprüfungen unterstützt.
ACL-Objekte gehören zur Datenquelle (dataSource.acl). Die ACL der Haupt-Datenquelle kann über app.acl schnell aufgerufen werden. Die Verwendung von ACLs für andere Datenquellen finden Sie im Kapitel Datenquellen-Verwaltung.
Berechtigungs-Snippets können häufig verwendete Berechtigungskombinationen als wiederverwendbare Berechtigungseinheiten registrieren. Nachdem eine Rolle an ein Snippet gebunden wurde, erhält sie die entsprechende Gruppe von Berechtigungen. Dies reduziert doppelte Konfigurationen und verbessert die Effizienz der Berechtigungsverwaltung.
acl.allow() wird verwendet, um bestimmten Operationen zu erlauben, Rollenbeschränkungen zu umgehen. Dies ist nützlich für öffentliche APIs, Szenarien, die eine dynamische Berechtigungsprüfung erfordern, oder Fälle, in denen die Berechtigungsprüfung auf dem Anfragekontext basieren muss.
Beschreibung des condition-Parameters:
'public': Jeder Benutzer (einschließlich nicht angemeldeter Benutzer) kann zugreifen, ohne jegliche Authentifizierung.'loggedIn': Nur angemeldete Benutzer können zugreifen, erfordert eine gültige Benutzeridentität.(ctx) => Promise<boolean> oder (ctx) => boolean: Eine benutzerdefinierte Funktion, die dynamisch basierend auf dem Anfragekontext entscheidet, ob der Zugriff erlaubt ist. Dies ermöglicht die Implementierung komplexer Berechtigungslogiken.acl.use() wird verwendet, um benutzerdefinierte Berechtigungs-Middleware zu registrieren, die es ermöglicht, benutzerdefinierte Logik in den Berechtigungsprüfungsprozess einzufügen. Dies wird normalerweise zusammen mit ctx.permission verwendet, um benutzerdefinierte Berechtigungsregeln zu definieren. Es eignet sich für Szenarien, die eine unkonventionelle Berechtigungssteuerung erfordern, wie z. B. öffentliche Formulare, die eine benutzerdefinierte Passwortüberprüfung benötigen, oder dynamische Berechtigungsprüfungen basierend auf Anfrageparametern.
Typische Anwendungsfälle:
Berechtigungen über ctx.permission steuern:
Beschreibung der ctx.permission-Eigenschaft:
skip: true: Überspringt nachfolgende ACL-Berechtigungsprüfungen und erlaubt den Zugriff direkt.addFixedParams kann fest definierte Datenbereichs-(Filter-)Beschränkungen für Operationen bestimmter Ressourcen hinzufügen. Diese Beschränkungen umgehen Rollenbeschränkungen und werden direkt angewendet, typischerweise zum Schutz kritischer Systemdaten.
Tipp:
addFixedParamskann verwendet werden, um zu verhindern, dass sensible Daten versehentlich gelöscht oder geändert werden, z. B. systeminterne Rollen, Administratorkonten usw. Diese Beschränkungen wirken zusätzlich zu den Rollenberechtigungen und stellen sicher, dass geschützte Daten auch mit entsprechenden Berechtigungen nicht manipuliert werden können.
acl.can() wird verwendet, um zu prüfen, ob eine Rolle die Berechtigung hat, eine bestimmte Operation auszuführen. Es gibt ein Berechtigungsergebnisobjekt oder null zurück. Dies wird häufig in der Geschäftslogik verwendet, um Berechtigungen dynamisch zu überprüfen, z. B. um in Middleware oder Operation-Handlern basierend auf der Rolle zu entscheiden, ob bestimmte Operationen ausgeführt werden dürfen.
Tipp: Wenn mehrere Rollen übergeben werden, wird jede Rolle nacheinander geprüft und das Ergebnis der ersten Rolle mit Berechtigung zurückgegeben.
Typdefinitionen:
Wenn Sie möchten, dass benutzerdefinierte Operationen in der Benutzeroberfläche konfiguriert werden können (z. B. auf der Rollenverwaltungsseite angezeigt werden), müssen Sie diese mit setAvailableAction registrieren. Registrierte Operationen erscheinen in der Berechtigungskonfigurationsoberfläche, wo Administratoren die Operationsberechtigungen für verschiedene Rollen konfigurieren können.
Parameterbeschreibung:
{{t("key")}}).'new-data': Operationen, die neue Daten erstellen (z. B. Import, Hinzufügen usw.).'existing-data': Operationen, die bestehende Daten ändern (z. B. Aktualisieren, Löschen usw.).'new-data' gültig.Nach der Registrierung erscheint diese Operation in der Berechtigungskonfigurationsoberfläche, wo Administratoren die Berechtigungen für diese Operation auf der Rollenverwaltungsseite konfigurieren können.