CodeIgniter Лучшая реализация для ACL

Как лучше всего реализовать ACL в CodeIgniter?

  • Роли, группы, права пользователей на основе БД?
  • Создать библиотеку?

Вот с чем мы работаем:

Статьи, Авторы

Есть два типа авторов:

  • Нормальный автор (видит только свои статьи).
  • Автор, который также является администратором (может просматривать все статьи и одобрять статьи других авторов).

Учитывая, что функциональность будет расширяться (больше функций, которые потребуют ограничения разрешений для типов авторов), как лучше всего сделать ACL в CodeIgniter?


person Hopstream    schedule 05.04.2011    source источник


Ответы (2)


Вам нужно будет разделить контроллеры для каждого типа разрешения и иметь модуль, который проверяет набор переменных сеанса, когда пользователь входит в систему с типом разрешения, разрешенным для этого конкретного контроллера.

// module User_model:
function is_logged_in_admin()
{
    $is_logged_in = $this->session->userdata('is_logged_in');
    $user_status = $this->session->userdata('user_type');
    if(!isset($is_logged_in) || $is_logged_in != true || $user_status != 'admin')
    {
    $this->session->sess_destroy();  
    redirect('please_login/', 'refresh');           

    }       
}

Контроллер, загрузите модуль и проверьте конструкцию:

    function __construct()
{
    parent::__construct();
    $this->load->model('User_model'); 
        $this->User_model-> is_logged_in_admin();

}
person tylerpenney    schedule 05.04.2011
comment
Это было бы только для входа в систему, а не ACL для определенных компонентов контроллеров. - person Hopstream; 06.04.2011
comment
вы также можете включить функцию is_logged_in_admin(); в каждой конкретной функции контроллера. - person tylerpenney; 07.04.2011

Я нахожусь в процессе написания системы авторизации на основе ACL, которая проверяет разрешение на уровне URL. Он должен быть прозрачным и независимым от системы аутентификации. Он реализован как хук конструктора постконтроллера.

К сожалению, она не закончена. но вы можете проверить его на github и разветвить его, если хотите его закончить. atm он работает только с ACL, закодированными в конфигурационном файле, но позволяет использовать внешний источник группы/роли (я еще не написал его).

person icchanobot    schedule 06.04.2011