Documents | Tutoriels | Rallonges
Breaking News : Laravel-authz est désormais disponible, une bibliothèque d'autorisation pour le framework Laravel.
PHP-Casbin est une bibliothèque de contrôle d'accès open source puissante et efficace pour les projets PHP. Il prend en charge l'application des autorisations basées sur divers modèles de contrôle d'accès.
Casbine | jCasbin | nœud-Casbin | PHP-Casbine |
prêt pour la production | prêt pour la production | prêt pour la production | prêt pour la production |
PyCasbin | Casbin.NET | Casbin-CPP | Casbin-RS |
prêt pour la production | prêt pour la production | prêt pour la production | prêt pour la production |
Exigez ce package dans le composer.json
de votre projet. Cela téléchargera le package :
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
, read-log
. Il ne contrôle pas l'accès à un article ou à un journal spécifique.resource.Owner
peut être utilisé pour obtenir l'attribut d'une ressource./res/*
, /res/:id
et les méthodes HTTP comme GET
, POST
, PUT
, DELETE
.Dans php-casbin, un modèle de contrôle d'accès est résumé dans un fichier CONF basé sur le métamodèle PERM (Policy, Effect, Request, Matchers) . Ainsi, changer ou mettre à niveau le mécanisme d’autorisation d’un projet est aussi simple que modifier une configuration. Vous pouvez personnaliser votre propre modèle de contrôle d'accès en combinant les modèles disponibles. Par exemple, vous pouvez regrouper les rôles RBAC et les attributs ABAC dans un seul modèle et partager un ensemble de règles de stratégie.
Le modèle le plus basique et le plus simple de php-casbin est l'ACL. Le modèle CONF d'ACL est :
# 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
Un exemple de stratégie pour le modèle ACL est le suivant :
p, alice, data1, read
p, bob, data2, write
Cela signifie :
Ce que fait php-casbin :
{subject, object, action}
ou sous une forme personnalisée telle que vous l'avez définie, les autorisations d'autorisation et de refus sont prises en charge.root
ou administrator
. Un superutilisateur peut tout faire sans autorisations explicites.keyMatch
peut mapper une clé de ressource /foo/bar
au modèle /foo*
.Ce que php-casbin ne fait PAS :
username
et password
lorsqu'un utilisateur se connecte)https://casbin.org/docs/en/overview
Vous pouvez également utiliser l'éditeur en ligne (http://casbin.org/editor/) pour rédiger votre modèle et votre politique php-casbin dans votre navigateur Web. Il fournit des fonctionnalités telles que syntax highlighting
et code completion
, tout comme un IDE pour un langage de programmation.
https://casbin.org/docs/tutorials
php-casbin fournit deux ensembles d'API pour gérer les autorisations :
https://casbin.org/docs/en/adapters
https://casbin.org/docs/en/role-managers
Modèle | Fichier modèle | Fichier de stratégie |
---|---|---|
Liste de contrôle d'accès | basic_model.conf | basic_policy.csv |
ACL avec superutilisateur | basic_model_with_root.conf | basic_policy.csv |
ACL sans utilisateurs | basic_model_without_users.conf | basic_policy_without_users.csv |
ACL sans ressources | basic_model_without_resources.conf | basic_policy_without_resources.csv |
RBAC | rbac_model.conf | rbac_policy.csv |
RBAC avec rôles de ressources | rbac_model_with_resource_roles.conf | rbac_policy_with_resource_roles.csv |
RBAC avec domaines/locataires | rbac_model_with_domains.conf | rbac_policy_with_domains.csv |
ABAC | abac_model.conf | N / A |
Reposant | keymatch_model.conf | keymatch_policy.csv |
Refuser le remplacement | rbac_model_with_deny.conf | rbac_policy_with_deny.csv |
Priorité | modèle_priorité.conf | priorité_policy.csv |
Middlewares d'authentification pour les frameworks Web : https://casbin.org/docs/middlewares
https://casbin.org/docs/adopters
Ce projet existe grâce à toutes les personnes qui y contribuent.
Merci à tous nos contributeurs ! [Devenez contributeur]
Soutenez ce projet en devenant sponsor. Votre logo apparaîtra ici avec un lien vers votre site Web. [Devenez parrain]
Ce projet est sous licence Apache 2.0.
Si vous avez des problèmes ou des demandes de fonctionnalités, veuillez nous contacter. Les relations publiques sont les bienvenues.