Documentación | Tutoriales | Extensiones
Noticias de última hora : Laravel-authz ya está disponible, una biblioteca de autorización para el marco Laravel.
PHP-Casbin es una biblioteca de control de acceso de código abierto potente y eficiente para proyectos PHP. Proporciona soporte para hacer cumplir la autorización basada en varios modelos de control de acceso.
cabina | jCasbin | nodo-Casbin | PHP-Casbin |
listo para producción | listo para producción | listo para producción | listo para producción |
PyCasbin | Casbin.NET | Casbin-CPP | Casbin-RS |
listo para producción | listo para producción | listo para producción | listo para producción |
Requiere este paquete en el composer.json
de tu proyecto. Esto descargará el paquete:
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
. No controla el acceso a un artículo o registro específico.resource.Owner
El propietario se puede utilizar para obtener el atributo de un recurso./res/*
, /res/:id
y métodos HTTP como GET
, POST
, PUT
, DELETE
.En php-casbin, un modelo de control de acceso se abstrae en un archivo CONF basado en el metamodelo PERM (Política, Efecto, Solicitud, Coincidencias) . Entonces, cambiar o actualizar el mecanismo de autorización de un proyecto es tan simple como modificar una configuración. Puedes personalizar tu propio modelo de control de acceso combinando los modelos disponibles. Por ejemplo, puede reunir roles RBAC y atributos ABAC dentro de un modelo y compartir un conjunto de reglas de políticas.
El modelo más básico y simple en php-casbin es ACL. El modelo CONF de ACL es:
# 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
Una política de ejemplo para el modelo ACL es como:
p, alice, data1, read
p, bob, data2, write
Significa:
Qué hace php-casbin:
{subject, object, action}
o en un formulario personalizado según lo definido, se admiten tanto permitir como denegar autorizaciones.root
o administrator
. Un superusuario puede hacer cualquier cosa sin permisos explícitos.keyMatch
puede asignar una clave de recurso /foo/bar
al patrón /foo*
.Lo que php-casbin NO hace:
username
y password
cuando un usuario inicia sesión)https://casbin.org/docs/en/overview
También puede utilizar el editor en línea (http://casbin.org/editor/) para escribir su modelo y política php-casbin en su navegador web. Proporciona funciones como syntax highlighting
y code completion
, como un IDE para un lenguaje de programación.
https://casbin.org/docs/tutorials
php-casbin proporciona dos conjuntos de API para administrar permisos:
https://casbin.org/docs/en/adapters
https://casbin.org/docs/en/role-managers
Modelo | Archivo de modelo | Archivo de política |
---|---|---|
LCA | modelo_basico.conf | política_básica.csv |
ACL con superusuario | modelo_básico_con_raíz.conf | política_básica.csv |
ACL sin usuarios | modelo_basico_sin_usuarios.conf | política_básica_sin_usuarios.csv |
ACL sin recursos | modelo_basico_sin_recursos.conf | política_básica_sin_recursos.csv |
RBAC | rbac_model.conf | rbac_policy.csv |
RBAC con roles de recursos | rbac_model_with_resource_roles.conf | rbac_policy_with_resource_roles.csv |
RBAC con dominios/inquilinos | rbac_model_with_domains.conf | rbac_policy_with_domains.csv |
ABAC | abac_model.conf | N / A |
Sosegado | keymatch_model.conf | keymatch_policy.csv |
Anulación de denegación | rbac_model_with_deny.conf | rbac_policy_with_deny.csv |
Prioridad | modelo_prioridad.conf | política_prioridad.csv |
Middlewares de autenticación para marcos web: https://casbin.org/docs/middlewares
https://casbin.org/docs/adopters
Este proyecto existe gracias a todas las personas que contribuyen.
¡Gracias a todos nuestros patrocinadores! [Conviértete en patrocinador]
Apoya este proyecto convirtiéndote en patrocinador. Su logotipo aparecerá aquí con un enlace a su sitio web. [Conviértete en patrocinador]
Este proyecto está bajo la licencia Apache 2.0.
Si tiene algún problema o solicitud de funciones, contáctenos. Las relaciones públicas son bienvenidas.