CakePHP 2.4如何验证用户? (没有密码)

时间:2014-01-08 20:52:54

标签: cakephp authorization

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

但仍然没有运气。

这里有同样问题的人或有解决方案吗?

感谢您的帮助。

1 个答案:

答案 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()) {}