Торт Php auth проблема - PullRequest
1 голос
/ 17 июля 2009

HI,

У меня проблема с торт php, встроенным в auth - я не могу войти ...

1) пользователь добавляется через панель управления приложением и хэшируется с помощью $ this-> auth-> password ('xxx') - я проверил, что это corrent в db

2) защитная соль не емтпи

3) в действии Пользователь / данные для входа ['Пользователь'] ['пароль'] пуст (я не знаю, правильно ли это, но я читал, что Auth удаляет содержимое данных ['пароль'] или data ['User'] ['password'] - я прав?

4) В БД есть таблица пользователей с полями username и password

После того, как я пытаюсь войти в систему, $ session-> flash ('auth') говорит:

Ошибка входа. Неверное имя пользователя или пароль.

но перед фильтром в AppController я установил

$ this-> Auth-> loginError = 'Нет, вы дурак! Это не правильный пароль! ';

Так что может быть не так? :(

Ответы [ 5 ]

4 голосов
/ 17 июля 2009

Включите отладку и проверьте, какие запросы генерируются. Если нет, то, вероятно, у вас что-то не так. Если они есть, выберите хешированный пароль, который он проверяет, и обновите пароль в базе данных Если вам это удастся, все должно работать нормально.

Установка первого пользователя немного хитрая.

2 голосов
/ 12 мая 2011

Не добавляйте:

function beforeSave (){

    if(isset($this->data[$this->alias]['password'])) {
        $this->data[$this->alias]['password'] = Security::hash($this->data[$this->alias]['password'], null, true);
        return true;
    }

}

Если в app_controller имеется следующий скрипт:

var $ components = array ('Auth', 'Email');

function beforeFilter() {
    $this->Auth->fields = array(
        'username' => 'email',
        'password' => 'password'
    );
}
1 голос
/ 17 мая 2011

Убедитесь, что в столбце паролей базы данных указан правильный тип данных, т.е. char(40).

1 голос
/ 31 января 2010

Убедитесь, что вы ввели

function beforeFilter(){
   parent::beforeFilter();
}

в вашем UsersController

0 голосов
/ 17 июля 2009

Ваша проблема в массиве данных POST. Если поле data['User']['password'] пустое, я думаю, что вы, возможно, нашли свою проблему. IIRC, компонент Auth делает автоматический хеш пароля. Но я считаю, что $this->data['User']['password'] не должно быть пустым (в контроллере) - оно просто не будет в открытом тексте.

Проверьте свою форму, чтобы убедиться, что введенные имена верны. Также, как предложила niteria, попробуйте проверить код SQL в отладочном дампе, чтобы увидеть, какие учетные данные проверяются в базе данных (вы можете позвонить по номеру $this->Auth->password('somestring'), чтобы узнать, каким должен быть хешированный пароль, как только вы получите свой соль применяется).

GL!

...