У меня есть простое приложение cakephp, я использую этот учебник Simple Authentication and Authorization Application. У меня такой же точный код, как и в учебнике.Ошибка входа в CakePHP
Я запускаю это на своем компьютере с помощью Apache/MySQL, все работает отлично. Когда я развертываю его на своем общем хостинге (Bluehost), я начинаю получать логин.
Я проверил MySQL db на локальном и сервере. Разница заключается в том, что пароли в моем локальном db хэшируются, но пароли на хостинге dbs равны. (Это тот же самый точный код работает.) (Я хочу быть ясным в этом вопросе, это не мое намерение и, очевидно, другое поведение, но я не знаю, в чем причина этого.)
Это мой таблица:
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
);
Эти соответствующие методы из моего контроллера для входа на Citidesk.ru соответственно:
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;
}
На моем локальном компьютере я могу сначала добавить пользователя и позже войти с этим пользователем. На сервере я могу добавить пользователя, но когда я хотел войти в систему, я вижу сообщение об ошибке «Недопустимое имя пользователя или пароль, повторите попытку»
Почему вы не хранить пароли хэш-на сервере? – gcochard
Вот что я прошу. Я намерен хранить их хэшированными. По какой-то причине они хранятся на равнине. Я не знаю, что вызывает эту поведенческую разницу. –
Похоже на 'AuthComponent :: password ($ this-> data [$ this-> alias] ['password']);' call не работает. – gcochard