Cakephp ACL Компонент - PullRequest
       2

Cakephp ACL Компонент

2 голосов
/ 30 октября 2010

Я использую компонент ACH для CakePHP, чтобы сделать сайт безопасным, но проблема в том, что когда я пытаюсь запретить какое-либо конкретное действие, например,. group.The таблица aros_acos выглядит следующим образом ---- id aro_id aco_id _create _read _update _delete 1 1 1 1 1 1 1 2 2 10 1 1 1 1 3 3 10 1 1 1 -1 В приведенной выше таблице третья строка aro_id указывает на группу 3, а aco_id указывает на контроллер Notes.

В чем может быть проблема.

Ответы [ 2 ]

1 голос
/ 30 октября 2010

У меня нет доступа к моим реализациям в данный момент, так что это из памяти:

Настройки crud в таблице acos_aros не отображают и не контролируют доступ к методам / функциям / действиям как таковым. Это фактическая строка в таблице, которая делает это. Будет строка для каждой перестановки Aro -> Aco , которую вы определили - они не обязательно существуют по умолчанию.

Следовательно, запись (строка) для Администраторы: AdminUser_1 => Posts :: delete будет состоять из 1s, 0s or -1s. Установите все четыре числа на 1 для доступа или -1 для отказа.

Я сделал это проще, построив (огромную) матрицу флажков для каждой группы, контроллера и действия.

Чтобы подвести итог, включить удаление для пользователя:

  1. найти соответствующую строку в таблице acos_aros
  2. Установите все четыре _create, _read, _update, _delete на 1

, например

(3087, 1, 1314, '1', '1', '1', '1'), // allow

(3086, 1, 1313, '-1', '-1', '-1', '-1') // deny
0 голосов
/ 14 апреля 2014

Возможно, ваша база данных повреждена с момента последних изменений.

Я бы порекомендовал вам исправить таблицы, помните, что это отношения hasMany плюс TreeBehaviour, если действие, которое по какой-либо причине не пускается в узел контроллера, объясняеттакое поведение.

К счастью, есть кто-то, кто задумался над этим и разработал плагин ACL Manager, который позволяет исправить это с помощью консоли.

https://github.com/FMCorz/AclManager

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

./Console/cake AclExtras.AclExtras aco_sync

Вы можете получить полное руководство для всех доступных команд, таких как:

./Console/cake AclExtras.AclExtras -h
./Console/cake AclExtras.AclExtras aco_sync -h

В любое время,если вы не можете получить доступ к APP, добавьте Controller к методу authorize в вашем AppController, а затем: $ this-> Auth-> allow (), чтобы действовал любой с допустимым auth.

Пример, просто aclcheck:

$this->Auth->authorize = array(
     'Actions' => array('actionPath' => 'controllers')
);

Пример проверки контроллера и ACL:

$this->Auth->authorize = array(
     'Controller',
     'Actions' => array('actionPath' => 'controllers')
);

Используя второй параметр, вы можете в любое время включить $this->Auth->allow() в beforeFilter вашего контроллера, чтобы разрешить доступ, который вы хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...