Документация | Учебники | Расширения
Срочные новости : теперь доступен Laravel-authz, библиотека авторизации для платформы Laravel.
PHP-Casbin — это мощная и эффективная библиотека контроля доступа с открытым исходным кодом для проектов PHP. Он обеспечивает поддержку принудительной авторизации на основе различных моделей контроля доступа.
Касбин | jCasbin | узел-Casbin | PHP-Casbin |
готовый к производству | готовый к производству | готовый к производству | готовый к производству |
ПиКасбин | Касбин.NET | Касбин-CPP | Касбин-РС |
готовый к производству | готовый к производству | готовый к производству | готовый к производству |
Требуйте этот пакет в composer.json
вашего проекта. Это загрузит пакет:
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
. Он не контролирует доступ к конкретной статье или журналу.resource.Owner
Владелец может использоваться для получения атрибута ресурса./res/*
, /res/:id
и методы HTTP, такие как GET
, POST
, PUT
, DELETE
.В php-casbin модель контроля доступа абстрагируется в файл CONF на основе метамодели PERM (Policy, Effect, Request, Matchers) . Таким образом, переключить или обновить механизм авторизации проекта так же просто, как изменить конфигурацию. Вы можете настроить свою собственную модель контроля доступа, комбинируя доступные модели. Например, вы можете объединить роли RBAC и атрибуты ABAC внутри одной модели и использовать один набор правил политики.
Самая базовая и простая модель в php-casbin — это ACL. Модель CONF ACL:
# 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
Пример политики для модели ACL выглядит следующим образом:
p, alice, data1, read
p, bob, data2, write
Это означает:
Что делает php-casbin:
{subject, object, action}
или в настроенной вами форме, поддерживаются как разрешение, так и запрет авторизации.root
или administrator
. Суперпользователь может делать что угодно без явных разрешений.keyMatch
может сопоставить ключ ресурса /foo/bar
с шаблоном /foo*
.Чего НЕ делает php-casbin:
username
и password
при входе пользователя в систему)https://casbin.org/docs/en/overview
Вы также можете использовать онлайн-редактор (http://casbin.org/editor/), чтобы написать свою модель и политику php-casbin в своем веб-браузере. Он предоставляет такие функции, как syntax highlighting
и code completion
, точно так же, как IDE для языка программирования.
https://casbin.org/docs/tutorials
php-casbin предоставляет два набора API для управления разрешениями:
https://casbin.org/docs/en/adapters
https://casbin.org/docs/en/role-managers
Модель | Файл модели | Файл политики |
---|---|---|
список управления доступом | Basic_model.conf | Basic_policy.csv |
ACL с суперпользователем | Basic_model_with_root.conf | Basic_policy.csv |
ACL без пользователей | Basic_model_without_users.conf | Basic_policy_without_users.csv |
ACL без ресурсов | Basic_model_without_resources.conf | Basic_policy_without_resources.csv |
РБАК | rbac_model.conf | rbac_policy.csv |
RBAC с ролями ресурсов | rbac_model_with_resource_roles.conf | rbac_policy_with_resource_roles.csv |
RBAC с доменами/арендаторами | rbac_model_with_domains.conf | rbac_policy_with_domains.csv |
АБАК | abac_model.conf | Н/Д |
RESTful | keymatch_model.conf | keymatch_policy.csv |
Запретить переопределение | rbac_model_with_deny.conf | rbac_policy_with_deny.csv |
Приоритет | Priority_model.conf | Priority_policy.csv |
Промежуточное ПО Authz для веб-фреймворков: https://casbin.org/docs/middlewares
https://casbin.org/docs/adopters
Этот проект существует благодаря всем людям, которые вносят свой вклад.
Спасибо всем нашим сторонникам! [Стать спонсором]
Поддержите этот проект, став спонсором. Здесь появится ваш логотип со ссылкой на ваш сайт. [Стать спонсором]
Этот проект распространяется по лицензии Apache 2.0.
Если у вас есть какие-либо проблемы или пожелания по функциям, пожалуйста, свяжитесь с нами. Пиар приветствуется.