0

我知道以前有人问过这个问题,但是我几乎浏览了互联网上可以找到的所有文章,但没有解决我的问题-.-

我试图让我的 CakePHP 2.1 应用程序使用他们的电子邮件(而不是用户名)和密码登录用户。另外,请考虑到我使用的控制器称为“配置文件”,而不是“用户”。这有什么区别吗?无论如何,这是我的代码......

应用控制器.php

<?php
class AppController extends Controller {
    public $components = array(
        'Session',
        'Auth'=>array(
            'authorize => array('Controller'),
            'Form'=>array(
                'fields' => array('username' => 'email'),
                'userModel' => 'Profile'
            )
        )
    );
}
?>

ProfilesController.php

<?php
class ProfilesController extends AppController {

    function login() {
        if ($this->request->is('post')) {
            if ($this->Auth->login()) {
                $this->Session->setFlash('You have been signed in.', 'flash_success');
                $this->redirect($this->Auth->redirect());
            } else {
                $this->Session->setFlash('Login failed. Your username/password was incorect.');
            }
        }
    }

}
?>

登录.ctp

<?php
echo $this->Form->create();
echo $this->Form->input('email');
echo $this->Form->input('password');
echo $this->Form->submit('Sign In');
?>

任何想法/建议为什么此登录仍然无法正常工作!?我很困惑。

谢谢!

4

3 回答 3

2

这个函数是你写的吗?

ProfilesController.php

function beforeFilter() {
     $this->Auth->fields = array('username' => 'email', 'password' => 'password');
}
于 2012-12-07T12:54:05.407 回答
2

检查我给类似问题的答案

无法使用不同的表登录 cakephp

如果这不能解决,请返回

于 2012-12-08T07:42:44.487 回答
1

谢谢你的回答!我刚刚解决了我的问题,这实际上是一个非常容易犯的错误。

我实际上正在使用:

'Form' => array(
    'userModel'=>'Profile',
    'fields' => array('username' => 'email')
)

就其本身而言,而不是在 'authenticate' 参数中使用它,如下所示:

'authenticate' => array(
    'Form' => array(
        'userModel'=>'Profile',
        'fields' => array('username' => 'email')
    )
)

谢谢你们的帮助!欣赏它。

于 2012-12-08T08:29:16.893 回答