Таблица Aros в CakePHP по-прежнему включает пользователей даже после bindNode

#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? В чем разница / почему это работает, а другое нет?