Пекарня.
Все о CakePHP
Вход:
Пароль:
Home Page
Каталог
Изменения
НовыеКомментарии
Пользователи
Регистрация
CakePHP:
Code
/
Misc
/noacl
...
==Разделение доступа без ACL== В данный момент я пишу систему на связке ~CakePHP и MS SQL. Сначала попробовал использовать стандартный компонент ACL, но выяснилось, что ~CakePHP не полностью поддерживает MS SQL (по крайней мере в этом компоненте). Поэтому пришлось придумать следующий метод разделения доступа. Предполагается, что у нас существует модель User, описывающая пользователя, и в ней присутствует поле ##is_admin##, определяющая его принадлежность к группе администраторов. Таким образом существуют три группы: гости, пользователи и администраторы. Для реализации подхода, нужно добавить код в ##app_controller.php## %%(php) <?php class AppController extends Controller { function beforeFilter() { $allowedToUsers = isset($this->allowedToUsers) ? $this->allowedToUsers : array(); $allowedToGuests = isset($this->allowedToGuests) ? $this->allowedToGuests : array(); $group = $this->userGroup(); switch ($group) { case 'user': if(!in_array($this->action, $allowedToUsers)) { $this->redirect('/pages/norights'); } break; case 'guest': if(!in_array($this->action, $allowedToGuests)) { $this->redirect('/users/login'); } break; } } function userGroup() { $user = $this->Session->read('User'); $ret = ''; if(empty($user['name'])) { $ret = 'guest'; } else if(intval($user['is_admin']) == 1) { $ret = 'admin'; } else { $ret = 'user'; } $this->set('userGroup', $ret); return $ret; } } ?> %% Осталось установить ограничения в контроллерах приложения. Для этого нужно добавить массивы ##$allowedToUsers## и ##$allowedToGuests##, содержащие в себе список действий контроллера, к которым разрешен доступ соответствующим группам (предполагается, что администраторам разрешено все). %%(php) class StudentsController extends AppController { var $name = 'Students'; var $helpers = array('Html', 'Form', 'Time'); var $allowedToUsers = array('index', 'view', 'add', 'edit', 'delete'); var $allowedToGuests = array(); %% Готово.
Поиск:
Управляется
WackoWiki R4.2
без футера
,
без шапки
,
без дизайна
,
без заголовков
,
без копирайтов
,
без подсветки синтаксиса
,
без разметки
,
для печати
,
версия 1
,
версия 2
,
версия 3
,
версия 4