无法使用cakephp中的电子邮件登录,使用用户名时效果很好

时间:2012-06-13 13:40:13

标签: cakephp login cakephp-2.1

我无法使用CakePHP 2.1中的电子邮件登录,当我尝试使用用户名时,它的工作效果非常好。

以下是代码

查看:login.ctp

<?php
    echo $this->Form->create();
    echo $this->Form->input('email');
    //echo $this->Form->input('username');
    echo $this->Form->input('password');
    echo $this->Form->end('Login');
?>

Controller:UsersController.php

<?php
    public function login(){
        if ($this->request->is('post')){
            if ($this->Auth->login()){
                $this->redirect($this->Auth->redirect());
            } else {
                $this->Session->setFlash(__('Invalid email and password'));
            }
        }
    }
?>      

型号:User.php

<?php
App::uses('AuthComponent', 'Controller/Component');

class User extends AppModel {
    public function beforeSave(){
        if (isset($this->data[$this->alias]['password'])){
            $this->data[$this->alias]['password'] = AuthComponent::password($this->data[$this->alias]['password']);
        }
        return true;
    }
}
?>  

数据库结构:用户表

id Auto_Increment
username
email
password
role

我不知道,为什么它不接受任何用于登录的电子邮件ID,而是用于用户名的工作良好。

1 个答案:

答案 0 :(得分:3)

阅读CakePHP书籍的this section

以下是该部分的示例,您需要配置表单身份验证,以便为用户名使用不同的字段。

public $components = array(
    'Auth' => array(
        'authenticate' => array(
            'Form' => array(
                'fields' => array('username' => 'email')
            )
        )
    )
);