Dokumentation | Tutorials | Erweiterungen
Aktuelle Neuigkeiten : Laravel-authz ist jetzt verfügbar, eine Autorisierungsbibliothek für das Laravel-Framework.
PHP-Casbin ist eine leistungsstarke und effiziente Open-Source-Zugriffskontrollbibliothek für PHP-Projekte. Es bietet Unterstützung für die Durchsetzung der Autorisierung basierend auf verschiedenen Zugriffskontrollmodellen.
Kasbin | jCasbin | Knoten-Casbin | PHP-Casbin |
produktionsreif | produktionsreif | produktionsreif | produktionsreif |
PyCasbin | Casbin.NET | Casbin-CPP | Casbin-RS |
produktionsreif | produktionsreif | produktionsreif | produktionsreif |
Erfordern Sie dieses Paket in der composer.json
Ihres Projekts. Dadurch wird das Paket heruntergeladen:
composer require casbin/casbin
require_once ' ./vendor/autoload.php ' ;
use Casbin Enforcer ;
$ e = new Enforcer ( " path/to/model.conf " , " path/to/policy.csv " );
$ sub = " alice " ; // the user that wants to access a resource .
$ obj = " data1 " ; // the resource that is going to be accessed .
$ act = " read " ; // the operation that the user performs on the resource .
if ( $ e -> enforce ( $ sub , $ obj , $ act ) === true ) {
// permit alice to read data1
} else {
// deny the request , show an error
}
write-article
oder read-log
verwendet werden. Es kontrolliert nicht den Zugriff auf einen bestimmten Artikel oder ein bestimmtes Protokoll.resource.Owner
kann verwendet werden, um das Attribut für eine Ressource abzurufen./res/*
, /res/:id
und HTTP-Methoden wie GET
, POST
, PUT
, DELETE
.In php-casbin wird ein Zugriffskontrollmodell in eine CONF-Datei abstrahiert, die auf dem PERM-Metamodell (Policy, Effect, Request, Matchers) basiert. Das Ändern oder Aktualisieren des Autorisierungsmechanismus für ein Projekt ist also genauso einfach wie das Ändern einer Konfiguration. Sie können Ihr eigenes Zugangskontrollmodell anpassen, indem Sie die verfügbaren Modelle kombinieren. Beispielsweise können Sie RBAC-Rollen und ABAC-Attribute in einem Modell zusammenfassen und einen Satz Richtlinienregeln gemeinsam nutzen.
Das grundlegendste und einfachste Modell in PHP-Casbin ist ACL. Das ACL-Modell CONF lautet:
# Request definition
[request_definition]
r = sub, obj, act
# Policy definition
[policy_definition]
p = sub, obj, act
# Policy effect
[policy_effect]
e = some(where ( p.eft == allow))
# Matchers
[matchers]
m = r.sub == p.sub && r.obj == p.obj && r.act == p.act
Eine Beispielrichtlinie für das ACL-Modell sieht wie folgt aus:
p, alice, data1, read
p, bob, data2, write
Es bedeutet:
Was PHP-Casbin macht:
{subject, object, action}
-Formular oder einem benutzerdefinierten Formular, wie Sie es definiert haben. Es werden sowohl Zulassungs- als auch Verweigerungsberechtigungen unterstützt.root
oder administrator
. Ein Superuser kann alles ohne explizite Berechtigungen tun.keyMatch
einen Ressourcenschlüssel /foo/bar
dem Muster /foo*
zuordnen.Was PHP-Casbin NICHT macht:
username
und password
überprüfen, wenn sich ein Benutzer anmeldet)https://casbin.org/docs/en/overview
Sie können auch den Online-Editor (http://casbin.org/editor/) verwenden, um Ihr PHP-Casbin-Modell und Ihre Richtlinie in Ihrem Webbrowser zu schreiben. Es bietet Funktionen wie syntax highlighting
und code completion
, genau wie eine IDE für eine Programmiersprache.
https://casbin.org/docs/tutorials
php-casbin bietet zwei Sätze von APIs zum Verwalten von Berechtigungen:
https://casbin.org/docs/en/adapters
https://casbin.org/docs/en/role-managers
Modell | Modelldatei | Richtliniendatei |
---|---|---|
ACL | basic_model.conf | basic_policy.csv |
ACL mit Superuser | basic_model_with_root.conf | basic_policy.csv |
ACL ohne Benutzer | basic_model_without_users.conf | basic_policy_without_users.csv |
ACL ohne Ressourcen | basic_model_without_resources.conf | basic_policy_without_resources.csv |
RBAC | rbac_model.conf | rbac_policy.csv |
RBAC mit Ressourcenrollen | rbac_model_with_resource_roles.conf | rbac_policy_with_resource_roles.csv |
RBAC mit Domänen/Mandanten | rbac_model_with_domains.conf | rbac_policy_with_domains.csv |
ABAC | abac_model.conf | N / A |
RUHIG | keymatch_model.conf | keymatch_policy.csv |
Verweigern-Überschreiben | rbac_model_with_deny.conf | rbac_policy_with_deny.csv |
Priorität | prioritätsmodell.conf | Priority_policy.csv |
Authz-Middlewares für Web-Frameworks: https://casbin.org/docs/middlewares
https://casbin.org/docs/adopters
Dieses Projekt existiert dank aller Menschen, die dazu beitragen.
Vielen Dank an alle unsere Unterstützer! [Unterstützer werden]
Unterstützen Sie dieses Projekt, indem Sie Sponsor werden. Hier erscheint Ihr Logo mit einem Link zu Ihrer Website. [Sponsor werden]
Dieses Projekt ist unter der Apache 2.0-Lizenz lizenziert.
Wenn Sie Probleme oder Funktionswünsche haben, kontaktieren Sie uns bitte. PR ist willkommen.