#database #cakephp #acl
#База данных #cakephp #acl
Вопрос:
Следуя инструкциям в книге CakePHP по созданию сайта, контролируемого ACL, я добавил bindNode
предложенный, чтобы сделать его «ACL только для группы«.:
//in users model
function bindNode($user) {
return array('model' => 'Group', 'foreign_key' => $user['User']['group_id']);
}
Согласно этой странице, моя aros
таблица должна выглядеть следующим образом:
---- ----------- ------- ------------- ------- ------ ------
| id | parent_id | model | foreign_key | alias | lft | rght |
---- ----------- ------- ------------- ------- ------ ------
| 1 | NULL | Group | 1 | NULL | 1 | 2 |
| 2 | NULL | Group | 2 | NULL | 3 | 4 |
| 3 | NULL | Group | 3 | NULL | 5 | 6 |
---- ----------- ------- ------------- ------- ------ ------
Все хорошо — разрешения моей группы, похоже, работают правильно … и т.д., Но когда пользователи созданы, они все еще добавляются в aros
таблицу.
Это нормально? Следует ли добавлять пользователей, просто не используемых для целей доступа? Я предположил, что моя таблица будет выглядеть точно так же, как в примере (только группы, без пользователей), поэтому, когда я начал видеть добавленных пользователей, я забеспокоился.
Ответ №1:
добавьте следующую строку в свою пользовательскую модель:
public $actsAs = array('Acl' => array('type' => 'requester', 'enabled' => false));
Ссылка:
http://cakephp.lighthouseapp.com/projects/42648/tickets/1485-bindnode-still-creating-user-model-aros
Ответ №2:
попробуйте изменить на
function bindNode($user) {
return array('Group' => array('id' => $user['User']['group_id']));
}
и удалите
function parentNode
Комментарии:
1. Есть ли шанс, что вы можете объяснить, почему я сделал бы это таким образом, а не способом, указанным в Cake Book? В чем разница / почему это работает, а другое нет?