Вопрос

Есть ли открытый исходный код, PHP based, ролевая система контроля доступа, которую можно использовать для CodeIgniter?

Это было полезно?

Решение

Брэндон Сэвидж провел презентацию своего PHP-пакета»ПриложениеACL", который может обеспечивать или не обеспечивать доступ на основе ролей. PHPGACL тоже может сработать, но я не могу вам сказать наверняка.

Однако я могу вам сказать, что Zend_ACL Компонент Zend Framework будет выполнять настройки на основе ролей (однако вам придется создать подкласс, чтобы проверять несколько ролей одновременно).Конечно, боль в том, что вам придется вытащить Zend_ACL, я не верю, что он имеет какие-либо внешние зависимости от монолитной загрузки (или проверки SVN).

Хорошая особенность Zend_ACL заключается в том, что он не зависит от хранилища.Вы можете либо пересобирать его каждый раз, либо он предназначен для сериализации (я использую комбинацию обоих: сериализацию для кеша и перестройку из БД).

Другие советы

Возможно, я неправильно понимаю вопрос, но не в том ли весь смысл управления доступом на основе ролей (RBAC) избегать Списки контроля доступа (ACL)?

RBAC отличается от списков управления доступом (ACL). (...) в том смысле, что он назначает разрешения конкретным операциям, имеющим значение в организации, а не объектам данных низкого уровня.Например, список управления доступом может использоваться для предоставления или запрета доступа на запись к определенному системному файлу, но в нем не будет указано, каким образом этот файл можно изменить.В системе на основе RBAC операция может заключаться в создании транзакции «кредитного счета» в финансовом приложении (...).Назначение разрешения на выполнение конкретной операции имеет смысл, поскольку операции детализированы и сами по себе имеют смысл внутри приложения.(Цитировать: Википедия)

Я не знаю особенностей Zend_ACL или других упомянутых реализаций, но если они основаны на ACL, я бы не рекомендовал использовать их для авторизации на основе ролей.

Я создал проект с открытым исходным кодом под названием PHP-вышибала которые могут вас заинтересовать.Он еще довольно молод, но работает хорошо и его легко настроить.В итоге я разработал его, потому что ни одно из существующих решений не отвечало моим потребностям.Надеюсь, это поможет!

phpgacl http://phpgacl.sourceforge.net/ это универсальная система контроля доступа на основе ACL.

хотя я не знаю какой-либо конкретной реализации CI, я знаю, что вам нужен только файл основного класса, чтобы заставить phpgacl работать.Поэтому я верю, что интеграция с CI не составит никаких проблем.(Я мимоходом работаю с CI)

Вот две библиотеки RBAC для PHP, которые я нашел:

На самом деле я использовал первый в PolyAuth: https://github.com/Polycademy/PolyAuth/

Это полнофункциональная библиотека аутентификации, включающая RBAC уровня 1 NIST.И да, RBAC — это не то же самое, что ACL.Я также использую Codeigniter, все, что вам нужно сделать, это использовать драйвер PDO и передать идентификатор соединения.Посмотрите этот урок, как это сделать: http://codebyjeff.com/blog/2013/03/codeigniter-with-pdo

Узнал о Khaos ACL, которая является CI-библиотекой...Я также изучаю phpgacl и то, как его использовать для CI...Еще не проверял Zend ACL.Но возможно его можно "портировать" на CI

Попробуйте плагин DX_Auth для CodeIgniter.Я работаю над аналогичным (скорее надмножеством) функций, которые есть в DX_Auth.Мой набор надстроек CI включает отображение меню (которыми можно управлять с помощью CSS), управление доступом на основе ролей перед вызовом контроллера и другие функции.Я надеюсь опубликовать его в ближайшее время.Когда я это сделаю, я дам URL-адрес проекта.

RBAC != ACL — у Роланда есть единственный правильный ответ на этот вопрос.

Кстати, конечно, это важная часть структуры для реализации любого типа системы разрешений - по крайней мере, нет смысла использовать структуру, если она не дает вам хорошо спроектированную систему RBAC - возможно, лучше использовать простой шаблон. тогда система с любым слоем ORM.

В мире PHP распространен антипаттерн, когда такие фреймворки, как Ruby или Django, «клонируются» только как подмножество того, что предоставляют эти современные фреймворки. Типичным синдромом является отсутствие хорошей интеграции ACL или RBAC в эти фреймворки. по сути это шутка.В настоящее время существует только Yii PHP Framework с достойной реализацией RBAC.

Я знаю, что след остыл, но появился новый проект:

PHP-RBAC — это стандартный PHP-иерархический контроль доступа на основе ролей NIST уровня 2, который является довольно зрелым.Это также проект OWASP.

надеюсь, вам понравится в http://phprbac.net

http://www.jframework.info (мертвая ссылка)

jFramework имеет стандартный RBAC уровня 2 NIST с улучшениями, который считается самым быстрым из доступных (включая тесты), он может работать с одним файлом базы данных SQLite и тщательно протестирован, работает как перчатка.

Имеет зависимость от jFramework DBAL, но вы можете просто заменить SQL-запросы DBAL в коде на желаемый DBAL и, конечно же, вы можете использовать jFramework в режиме SOP.

Библиотека Ion Auth использует пользователей и группы — https://github.com/benedmunds/CodeIgniter-Ion-Authно нет работающей системы RBAC для их использования и управления.Но вы можете отбелить свои функции.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top