CakePHP 2.0 Auth登录无法正常工作

时间:2012-04-04 16:01:49

标签: authentication cakephp-2.0

我一直在与此斗争。我有一个需要身份验证的CakePHP 2.0应用程序,因为它必须使用另一种语言,我从“用户名”和“密码”约定中脱离了自动化的“用户”并创建了我自己的数据库表:

utilizatori('id', 'nume', 'parola')

在我的 AppController 中,我定义了以下内容,如果我理解正确,应覆盖默认的CakePHP关联并使其使用我的新结构:

class AppController extends Controller {
    var $components = array('Session',
    'Auth' => array('Form' => array(
        'userModel' => 'Utilizator',
        'fields' => array('username' => 'nume', 'password' => 'parola'),
        'loginAction' => array('controller' => 'utilizatori', 'action' => 'login'),
        'loginRedirect' => array('controller' => 'categorii', 'action' => 'admin_index'))));

    function beforeFilter() { }
}

在我的 UtilizatoriController 中,我有以下登录功能:

function login() 
{
    $this->layout = 'admin'; 
    debug($this->data);
    debug(Security::hash($this->data['Utilizator']['parola']));
    debug($this->Auth->login());
    /*more here but don't think it's important*/

数据调试会出现预期值,我们假设:

**data['Utilizator']['nume']** = 'Cosmin'
**data['Utilizator']['parola']** = 'Cosmin'

密码哈希调试会产生我也手动插入数据库的预期哈希值,但登录函数返回 false

我不确定接下来该做什么,我们将不胜感激。 另外,有没有办法访问发送到 $ this-> Auth-> login()的内容?

谢谢

1 个答案:

答案 0 :(得分:1)

事实证明,$ this-> Auth-> login()失败的原因是我在 AppController 中声明了 AuthComponent 。在How can I use different model for Auth component in CakePHP 2.0.4?进行了一些更多的研究和一个令人惊讶的小但有用的帖子后,我查看了我的代码,现在它似乎正在运作。

我会在这里发布评论,以防任何人碰到这一点。

public $components = array(
    'Session',
    'Auth' => array(
        'authenticate' => array(
            'Form' => array(
                'userModel' => 'Utilizator',
                'fields' => array(
                    'username' => 'nume',
                    'password' => 'parola'
                )
            )
        ),
        'loginAction' => array('controller' => 'utilizatori', 'action' => 'login'), //Not related to the problem
        'loginRedirect' => array('controller' => 'utilizatori', 'action' => 'index'), //Not related to the problem
        'logoutRedirect' => array('controller' => 'utilizatori', 'action' => 'index') //Not related to the problem
    )
);