我有一个简单的 cakephp 应用程序,我使用本教程Simple Authentication and Authorization Application构建。我的代码块与教程中的完全相同。
我使用 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;
}
在我的本地计算机上,我可以先添加一个用户,然后再使用该用户登录。在服务器上,我可以添加一个用户,但是当我想登录时,我看到错误消息“用户名或密码无效,请重试”