У меня есть простое приложение cakephp, которое я создаю, используя этот учебник Простое приложение для аутентификации и авторизации. У меня точно такой же блок кода, как и в учебнике.
Я запускаю это на своем компьютере с помощью Apache/MySQL, все работает нормально. Когда я развертываю его на своем общем хостинге (Bluehost), я начинаю получать ошибки при входе в систему.
Я проверил базу данных MySQL на своем локальном компьютере и на сервере. Разница в том, что пароли в моей локальной БД хэшируются, а пароли на хостинговых БД простые. (Это точно такой же код.) (Я хочу прояснить этот вопрос, это не мое намерение и, очевидно, другое поведение, но я не знаю, в чем причина этого.)
Это моя таблица:
CREATE TABLE users (
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50),
password VARCHAR(50),
role VARCHAR(20),
created DATETIME DEFAULT NULL,
modified DATETIME DEFAULT NULL
);
Это соответствующие методы моего контроллера для регистрации и входа в систему соответственно:
public function add() {
if ($this->request->is('post')) {
$this->User->create();
if ($this->User->save($this->request->data)) {
$this->Session->setFlash(__('The user has been saved'));
$this->redirect(array('action' => 'index'));
} else {
$this->Session->setFlash(__('The user could not be saved. Please, try again.'));
}
}
}
public function login() {
if ($this->request->is('post')) {
if ($this->Auth->login()) {
$this->redirect($this->Auth->redirect());
} else {
$this->Session->setFlash(__('Invalid username or password, try again'));
}
}
}
и, наконец, это метод beforeSave() моей модели:
public function beforeSave() {
if (isset($this->data[$this->alias]['password'])) {
$this->data[$this->alias]['password'] = AuthComponent::password($this->data[$this->alias]['password']);
}
return true;
}
На моем локальном компьютере я могу сначала добавить пользователя, а затем войти в систему с этим пользователем. На сервере я могу добавить пользователя, но когда я хочу войти, я вижу сообщение об ошибке «Неверное имя пользователя или пароль, попробуйте еще раз»
AuthComponent::password($this->data[$this->alias]['password']);
не работает. - person gcochard   schedule 14.06.2012Security.salt
наConfig/core.php
? - person bfavaretto   schedule 14.06.2012AuthComponent::password
терпит неудачу, я не должен видеть сообщение об ошибке в добавлении? - person Szere Dyeri   schedule 14.06.2012debug($this->data)
иdebug($this->alias)
в функцию beforeSave(), вы их увидите? И верны ли распечатанные значения? Кстати, ваш уровень отладки больше 0? - person nIcO   schedule 15.06.2012