in cakePHP 2.4>是用户身份验证的新流程。
在db表和模型中,我得到了名为“passwd”的密码列,表单输入的名称与db列相同。
所以在用户模型中我有:
if (isset($this->data[$this->alias]['passwd'])) {
$passwordHasher = new SimplePasswordHasher();
$this->data[$this->alias]['passwd'] = $passwordHasher->hash($this->data[$this->alias]['passwd']);
}
在用户控制器中我得到了
public function beforeFilter() {
parent::beforeFilter();
// Allow users to register and logout.
$this->Auth->allow('register','verify','login');
$this->Auth->authenticate = array(
'Form' => array(
'fields' => array('username' => 'email', 'password' => 'passwd'),
),
);
}
public function login() {
// accept only ajax post request
if ($this->request->is('ajax') && $this->request->is('post')) {
$tmpUser['User']['username'] = $this->request->data['User']['email'];
$tmpUser['User']['password'] = $this->request->data['User']['passwd'];
// try to login user
if ($this->Auth->login ($tmpUser)) {
echo('Login Successfull');
} else {
echo('Login Incorrect');
}
}
}
但遗憾的是我仍然无法成功登录。在SQL转储中无法发布密码(仅限用户名)。
我试图找到一些有用的信息,但找不到任何信息。
所以我尝试了文档:
http://book.cakephp.org/2.0/en/core-libraries/components/authentication.html
但仍然没有运气。
这里有同样问题的人或有解决方案吗?
感谢您的帮助。
答案 0 :(得分:0)
为什么要重新映射? 这不会起作用
if ($this->request->is('ajax') && $this->request->is('post')) {
// expects this to be posted:
// $this->request->data['User']['email'];
// $this->request->data['User']['passwd'];
// try to login user
if ($this->Auth->login()) {}