Плагин для пользователей CakeDC Как мне расширить его, чтобы иметь возможность настраивать управление входом в систему?

Я использую CakePHP 2.0 и установил плагин CakeDC Users. Плагин Users, похоже, работает, поскольку я могу войти в систему и быть перенаправленным на «/», как определено в функции UsersController _setupAuth плагина.

Но, поскольку я хочу изменить это, я добавил код настройки аутентификации из еще один вопрос о переполнении стека моей функции AppController перед фильтром.

Проблема в том, что это игнорируется, а код _setupAuth в UsersController имеет приоритет.

Итак, мой вопрос: как добавить пользовательский элемент управления перенаправлением в моем AppController без необходимости изменять код в плагине?

Меня еще больше смущает тот факт, что вопрос, на который я ссылался, говорит нам поместить функцию isAuthorized в AppController, что, похоже, означает, что я должен удалить функцию в UsersAppController.


person Jimbo    schedule 21.10.2012    source источник


Ответы (2)


Идея состоит в том, что вы расширяете его, переопределяя его классы в файле app.

Вы правильно настроили Auth параметры своего приложения в файле AppController. Вы также захотите включить компонент Auth в свой проект.

Затем в своем AppController::beforeFilter() вы можете настроить свои конкретные параметры, такие как

$this->Auth->loginRedirect = '/';

Итак, другой вопрос, на который вы ссылаетесь, верен, но вам не нужны все настройки, а только те, которые вы хотите перезаписать.

Я также настоятельно рекомендую добавить isAuthorized() в ваш AppController, если вы используете аутентификацию контроллера, так как вы захотите контролировать, кто что может видеть. НЕ как говорится в другом вопросе, просто верните true, так как вы не проверяете роли или логины, что плохо.

Если вы хотите изменить действие входа в систему, вам нужно создать свой собственный контроллер в своем «приложении / контроллере» и назвать его как-то иначе, чем Users, я предпочитаю MyUsersController.php, и в этом контроллере вы захотите расширить контроллер плагина. Вам нужно будет включить файл с App::uses('Users.UsersController','Controller') или подобным, и тогда ваш контроллер сможет

class MyUsersController extends UsersController{
  public function login(){

  }
}

У меня не было необходимости делать это с помощью плагина Users, поэтому, возможно, просто попробуйте сначала настроить AppController::beforeFilter() и проверить, что вы вызываете parent::beforeFilter() вверху.

person David Yell    schedule 10.12.2012

Вы изменили перенаправления в route.php? Вот мой, я отключил маршрут плагина, чтобы ссылаться на мой собственный контроллер AppUsersController.php

Обратите внимание, что я использую префикс /admin/. Если вам это не нужно, удалите «/admin/» в начале пути маршрута, а также таблицу ключей «prefix» и «admin».

Router::connect('/admin/users', array('plugin' => null, 'controller' => 'app_users', 'prefix' => 'admin', 'admin' => true));
Router::connect('/admin/users/index/*', array('plugin' => null, 'controller' => 'app_users', 'prefix' => 'admin', 'admin' => true));
Router::connect('/admin/users/users/:action/*', array('plugin' => null, 'controller' => 'app_users', 'prefix' => 'admin', 'admin' => true));
Router::connect('/admin/users', array('plugin' => null, 'controller' => 'app_users', 'prefix' => 'admin', 'admin' => true));
Router::connect('/users/:action/*', array('admin' => false, 'plugin' => null, 'controller' => 'app_users'));
Router::connect('/login/*', array('plugin' => null, 'controller' => 'app_users', 'action' => 'login'));
Router::connect('/logout/*', array('plugin' => null, 'controller' => 'app_users', 'action' => 'logout'));
Router::connect('/register/*', array('plugin' => null, 'controller' => 'app_users', 'action' => 'add'));
person vinzcelavi    schedule 21.04.2013