проверка подлинности администратора не работает - PullRequest
1 голос
/ 16 апреля 2011

для веб-сайта моего клиента у меня есть раздел администратора - единственное, что моя маршрутизация администратора не защищена паролем. Я добавил защиту администратора с руководством по настройке пользовательской системы и поместил следующий код в app_controller.php:

function beforeFilter() {
    // if an admin route is requested and not logged in
    $user = $this->Session->read('User');
    if(isset($this->params['admin']) && $this->params['admin'] && is_null($user)) {
        // set Flash and redirect to login page
        $this->Session->setFlash('You need to be logged in for that action.','default',array('class'=>'flash_bad'));
        $this->redirect(array('controller'=>'users','action'=>'login','admin'=>FALSE));
    }
}

& в моем app / config / rout.php у меня есть это:

Router::connect('/login', array('controller' => 'users', 'action' => 'login'));  
Router::connect('/admin/logout', array('controller' => 'users', 'action' => 'logout'));

Я уверен, что что-то не хватает для защиты.

Я все еще могу получить доступ к другим административным областям без входа в систему, то есть theowlhouse.com.au/admin/bookings.

Что я делаю не так? Страница администратора для модели пользователей является единственной защищенной.

Спасибо:)

1 Ответ

1 голос
/ 16 апреля 2011

Похоже, вы путаете маршрутизацию с префиксом с использованием компонента аутентификации .Обратите внимание, что префиксная маршрутизация называлась «маршрутизация администратора» до версии 1.3.

Вам не нужно использовать маршрутизацию администратора для использования компонента auth.Давайте начнем с простой настройки компонента auth.В контроллере приложения убедитесь, что он включен в массив компонентов:

var $components = array('Auth');

После того, как вы это сделаете, пользователи будут перенаправлены на страницу входа, если они не вошли в систему. Чтобы разрешить анонимным пользователямчтобы получить доступ к действию, вы вызываете $this->Auth->allow('action name'); Так, например, вы хотите разрешить неаутентифицированным пользователям использовать действия index () и view () в вашем контроллере элементов, но не add () или edit (),В вашем items_controller.php вы должны настроить beforeFilter () для вызова:

function beforeFilter() {
    parent::beforeFilter();
    $this->Auth->allow(array(
        'index',
        'view'
    ));
}
...