Каков наилучший способ реализации ACL в CodeIgniter?
Вот с чем мы работаем:
Статьи, авторы
Существует два типа авторов:
Учитывая, что функциональность будет расширяться (больше функций, требующих ограничения разрешений для типов авторов), что лучший способ сделать ACL в CodeIgniter?
Вам нужно будет разделить контроллеры для каждого типа разрешений и иметь модуль, который проверяет переменную сеанса, установленную, когда пользователь входит в систему с типом разрешений, разрешенным для этого конкретного контроллера.
// 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(); }
Я занимаюсь написанием системы авторизации на основе ACL, которая проверяет разрешения на уровне URL. Он должен быть прозрачным, а система проверки подлинности – агностиком. Он реализован как крюк конструктора пост-контроллера.
К сожалению, это не закончено. но вы можете проверить его на github и развить его, если вам хочется его закончить. atm он работает только с ACL, закодированными в файле конфигурации, но он позволяет использовать внешний источник группы / роли (я еще не написал его еще).