Основанное на роли управление доступом

NullPointerException s - исключения, возникающие при попытке использовать ссылку, которая указывает на отсутствие местоположения в памяти (null), как если бы она ссылалась на объект. Вызов метода по нулевой ссылке или попытка получить доступ к полю нулевой ссылки вызовет функцию NullPointerException. Они наиболее распространены, но другие способы перечислены на странице NullPointerException javadoc.

Вероятно, самый быстрый пример кода, который я мог бы придумать для иллюстрации NullPointerException, be:

public class Example {

    public static void main(String[] args) {
        Object obj = null;
        obj.hashCode();
    }

}

В первой строке внутри main я явно устанавливаю ссылку Object obj равной null. Это означает, что у меня есть ссылка, но она не указывает на какой-либо объект. После этого я пытаюсь обработать ссылку так, как если бы она указывала на объект, вызывая метод на нем. Это приводит к NullPointerException, потому что нет кода для выполнения в местоположении, на которое указывает ссылка.

(Это техничность, но я думаю, что она упоминает: ссылка, которая указывает на null, равна 't то же, что и указатель C, указывающий на недопустимую ячейку памяти. Нулевой указатель буквально не указывает на в любом месте , который отличается от указаний на местоположение, которое оказывается недопустимым.)

25
задан Anant Singh---Alive to Die 5 June 2015 в 19:16
поделиться

7 ответов

Brandon Savage дал представление своего пакета PHP" ApplicationACL", который может или не может выполнить основанный на роли доступ. PHPGACL мог бы работать также, но я не могу сказать Вам наверняка.

, Что я могу сказать, Вы, однако, , компонент Zend_ACL Платформы Зенда сделает основанные на роли установки (однако, необходимо будет разделить на подклассы для проверки нескольких ролей сразу). Предоставленный боль этого, необходимо будет вытащить Zend_ACL, я не полагаю, что это имеет любые внешние зависимости от монолитной загрузки (или контроль SVN).

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

12
ответ дан dcousineau 28 November 2019 в 21:04
поделиться

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

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

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

30
ответ дан Jens Roland 28 November 2019 в 21:04
поделиться

phpgacl http://phpgacl.sourceforge.net/ является базирующейся платформой управления доступом универсального acl

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

1
ответ дан paan 28 November 2019 в 21:04
поделиться

Узнанный о ACL Khaos, который является библиотекой CI... Я также проверяю phpgacl и как использовать его для CI... Have'nt проверил ACL Зенда все же. Но возможно это может быть "портировано" к CI

0
ответ дан 28 November 2019 в 21:04
поделиться

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

0
ответ дан 28 November 2019 в 21:04
поделиться

RBAC! = ACL - У Roland есть единственный правильный ответ на этот вопрос.

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

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

0
ответ дан 28 November 2019 в 21:04
поделиться

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

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

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

0
ответ дан 28 November 2019 в 21:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: