CakePHP войти в систему - PullRequest
0 голосов
/ 14 июня 2011

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

Я думаю, что этот код используется для отображения поля входа в систему, и вы можете войти только с именем пользователя test и паролем 123123

var $components = array("Auth", "Acl");

function beforeFilter(){
    $this->Security->loginOptions = array(
    'type' => 'basic',
    'realm' => 'Authenticate Emergency Response Center'
);
$this->Security->loginCredentials = array(
    'test' => '123123'
);
$this->Security->requireLogin();
    $this->_bindToSite();
    parent::beforeFilter(); 
}

Я хочу, чтобы окно входа в систему отображалось по-прежнему, но я хочу автоматически заполнить массив loginCredentials информацией из базы данных. У меня есть таблица под названием «операторы», которая содержит поля «user_id» и «пароль».

Может ли кто-нибудь сказать мне, как я мог бы изменить приведенный выше код, чтобы позволить любому из имен пользователей / паролей, хранящихся в таблице операторов, войти в систему?

Спасибо за любую помощь

Ответы [ 2 ]

1 голос
/ 14 июня 2011

Вы можете оставить большую часть тяжелой работы на компоненте CakePHP Auth, но если вы хотите использовать модель, отличную от 'User' по умолчанию, вам просто нужно установить это в beforeFilter(). Лучшее место для этого - app_controller.php в вашем каталоге app\.

function beforeFilter(){
    $this->Auth->userModel = 'Operator';
    $this->Auth->fields = array(
        'username' => 'user_id', 
        'password' => 'password'
    );
);
1 голос
/ 14 июня 2011

Создайте массив из базы данных и установите $this->Security->loginCredentials равным вашему массиву.

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