#php #codeigniter #login-control #tankauth
#php #codeigniter #вход-контроль #tankauth
Вопрос:
Я создал приложение с использованием codeigniter, в котором есть 3 разные группы участников
Администраторы — которые заходят на панель мониторинга и имеют CRUD-средства для добавления / редактирования / удаления событий, шоу и исполнителей
Клиенты — которые входят в систему с внешнего интерфейса и видят все элементы, добавленные администратором через внутренний интерфейс.
Медиа-партнеры — которые входят в систему из интерфейса и видят определенные части того, что может видеть клиент, но не все.
Я интегрировал библиотеку Tank_Auth для раздела клиентов, и все это отлично работает. Чего я хотел бы добиться, так это того, чтобы администратор мог входить в отдельную область администрирования, а медиа-партнеры тоже могли входить в отдельную область.
Каков наилучший способ подойти к этому?
Нужно ли мне создавать отдельные контроллеры панели мониторинга для каждой пользовательской базы и дублировать контроллер Tank_Auth 3 раза и настраивать это?
В идеале пользователи-администраторы также должны иметь возможность добавлять пользователей новостей и входить во все 3 отдельные области?
Кто-нибудь достигал такого решения раньше, если да, то как вы это делали? возможно, tank auth — неправильный подход?
Любой вклад был бы оценен.
Спасибо, Дэн
Ответ №1:
Я использую CI, но не использовал Tank_Auth, у меня есть свой класс auth, и в каждой функции у меня вызывается следующий метод: $this->auth->accessMap(get_class($this),__FUNCTION__);
В классе auth: общедоступная функция accessMap($controller_name,$function_name) { if ($this->perms_array[$controller_name][$function_name]) возвращает true; else $this->redir(); }
У меня есть массив разрешений в конфигурации:
$config['user_perms']['className']['method1'] = array($config['user_types']['admin']);
$config['user_perms']['className']['method2'] = array($config['user_types']['admin'],$config['user_types']['user']);
Таким образом, вы можете указать для каждого метода, у какого пользователя есть разрешение на его использование.
Я надеюсь, что это поможет.
Комментарии:
1. Это звучит как хороший способ достичь того, что мне нужно, КоКо, я знаю, что это обман, но ты можешь отправить мне свои полные файлы, чтобы я мог разобраться в этом должным образом?
Ответ №2:
Я не могу найти тему на форумах CI, потому что, похоже, я не могу войти на их веб-сайт прямо сейчас, однако выполните поиск ‘zend_acl в codeigniter’. В качестве альтернативы есть этот пост в блоге о том, как это реализовать, но он немного устарел.
ACL расшифровывается как Список контроля доступа, это позволит вам настроить различные разрешения для разных типов пользователей. На мой взгляд, у Zend одна из лучших реализаций ACL.
Более подробную информацию об ACL можно найти на веб-сайте zend.
Комментарии:
1. Спасибо Evolve, я сейчас посмотрю!
Ответ №3:
Отсутствие группы пользователей является проблемой при использовании tank_auth, если у нас несколько групп пользователей. Недавно я столкнулся с этой проблемой. Вот решение, опубликованное в CI forms.