我已经编写了一个用户控制器,如果提交的用户名和密码(使用 cakephp 的 Security::hash() => 例如6b0deec0d563224524da45691584643bc78c96ea
,没有额外的哈希设置加密)与数据库中的一行匹配,则该控制器应该登录用户。但它不起作用,我不知道为什么。
这是我的UsersController.php的片段
public function add() {
$this->set("title_for_layout", "Register");
if($this->request->is("post")) {
$this->User->set($this->request->data);
if($this->User->save(array("password" => Security::hash($this->request->data["User"]["password"])))) {
$this->Session->setFlash(__("Successfully registred."), "flash_success");
$this->redirect("/login");
} else {
$this->Session->setFlash(__("Validation failed."), "flash_danger");
}
}
}
注册工作正常,并在数据库中创建了一行,其中我有包含普通用户名的列“用户名”,例如“myuser”和包含散列字符串的“密码”。我不认为问题可以在这里解决。
这是我的UsersController.php的另一个片段
public function login() {
$this->set("title_for_layout", "Login");
if($this->request->is("post")) {
if($this->Auth->login()) {
$this->Session->setFlash("Login successfull.", "flash_success");
} else {
$this->Session->setFlash("Login failed.", "flash_danger");
}
}
}
这是视图login.ctp
<?php echo $this->Form->create('User'); ?>
<?= $this->Form->input("username"); ?>
<?= $this->Form->password("password"); ?>
<?= $this->Form->end("submit"); ?>
这是我的问题:登录总是失败。$component
此外,我在数组中没有任何设置。
我该如何解决这个问题?