在CakePHP v2.0中使用电子邮件地址进行身份验证

在CakePHP v2.0中使用电子邮件地址进行身份验证,php,cakephp,Php,Cakephp,Okies这个问题类似于我最近在Stack Overflow上提出的问题,但我基本上只是使用CakePHP书中的代码,而不是我自己的代码来尝试理解为什么有些东西不起作用 基本上,这个想法是允许用户在Cake 2.0版中使用他们的电子邮件地址和用户名登录。但是,它总是返回详细信息不正确,但我仍然可以使用用户名登录,因此基本上AppController中的覆盖不会改变任何内容。。。更重要的是,我试图弄清楚如何允许这两个字段登录 正如在这里的原始帖子中所讨论的:@nIcO已经整合了一些可能对这两个领域

Okies这个问题类似于我最近在Stack Overflow上提出的问题,但我基本上只是使用CakePHP书中的代码,而不是我自己的代码来尝试理解为什么有些东西不起作用

基本上,这个想法是允许用户在Cake 2.0版中使用他们的电子邮件地址和用户名登录。但是,它总是返回详细信息不正确,但我仍然可以使用用户名登录,因此基本上AppController中的覆盖不会改变任何内容。。。更重要的是,我试图弄清楚如何允许这两个字段登录

正如在这里的原始帖子中所讨论的:@nIcO已经整合了一些可能对这两个领域都有效的东西,但是这里解释的问题导致它不起作用

有什么想法吗?任何人都可以使用2.0版进行电子邮件登录

// AppController

public $components = array(
    'Auth' => array(
        'loginAction' => array(
            'controller' => 'users',
            'action' => 'login'
        ),
        'authenticate' => array(
            'Form' => array(
                'fields' => array('username' => 'email')
            )
        )
    )
);

// UsersController

public function login() {
    if ($this->request->is('post')) {
        if ($this->Auth->login()) {
            return $this->redirect($this->Auth->redirect());
        } else {
            $this->Session->setFlash(__('Username or password is incorrect'), 'default', array(), 'auth');
        }
    }
}

虽然id在UsersController(而不是AppController)中添加了它,但这对我作为用户名的电子邮件有效:


public $components = array('Auth');

//beforeFilter in UsersController
function beforeFilter() {
   parent::beforeFilter();
        $this->Auth->loginAction = array('controller' => 'users', 'action' => 'login');
        $this->Auth->authenticate = array(
            'Form' => array(                
                'fields' => array('username' => 'email')
            )
        );
}

希望它在某种程度上有所帮助

,尽管我在UsersController(而不是AppController)中添加了它,但这对我作为用户名的电子邮件有效:


public $components = array('Auth');

//beforeFilter in UsersController
function beforeFilter() {
   parent::beforeFilter();
        $this->Auth->loginAction = array('controller' => 'users', 'action' => 'login');
        $this->Auth->authenticate = array(
            'Form' => array(                
                'fields' => array('username' => 'email')
            )
        );
}

希望它在某些方面有所帮助

这是我发现的最好的实现:http://bin.cakephp.org/view/1831131032


我喜欢将一些逻辑移到模型中,清除控制器逻辑,使其更具MVC。希望这能帮助其他人。

这是我发现的最好的实现:http://bin.cakephp.org/view/1831131032


我喜欢将一些逻辑移到模型中,清除控制器逻辑,使其更具MVC。希望这能帮助其他人。

您的登录视图和用户模型是什么样子的?你能把它也贴出来吗?它和这里贴的一模一样:我可以使用用户名登录,但不能使用电子邮件地址。你的登录视图和用户模型是什么样子的?你也可以发布吗?与这里发布的完全一样:一切都可以使用用户名而不是电子邮件地址登录。如果电子邮件地址找不到1.3中所述的用户,是否会自动回退以使用用户名,或者如果电子邮件失败,我是否必须执行此处讨论的操作,实际再次修改字段:嗯,不,我认为用户名不能有两个字段。是的,您添加的链接中提供的解决方案可能适用于重建身份验证参数。如果电子邮件地址找不到1.3中所述的用户,是否会自动回退以使用用户名,或者如果电子邮件失败,我是否必须执行此处讨论的操作,通过实际修改字段:嗯,否,我认为用户名不能有两个字段。是的,您添加的链接中提供的解决方案可能适用于重建身份验证参数。