Cakephp 认证->;login()函数工作不正常

Cakephp 认证->;login()函数工作不正常,cakephp,cakephp-2.6,Cakephp,Cakephp 2.6,下面是AppController.php中的组件声明 'Auth' => array( 'authenticate' => array( 'Form' => array( 'userModel' => 'User', 'fields' => array('username' => 'email', 'password' => 'code'), 'scope'

下面是AppController.php中的组件声明

'Auth' => array(
    'authenticate' => array(
        'Form' => array(
            'userModel' => 'User',
            'fields' => array('username' => 'email', 'password' => 'code'),
            'scope' => array('activated' => true),
        ),
    ),
    'loginAction' => array('controller' => 'users', 'action' => 'login'),
    'loginRedirect' => array('controller' => 'members', 'action' => 'dashboard', 'admin' => true),
    'authError' => 'No Permission',
    'logoutRedirect' => array('controller' => 'pages', 'action' => 'home'),
    'userScope' => array('User.activated' => true),
),
登入表格:

<?= $this->Form->create('User', array('url' => '/users/login', 'class' => 'form-inline'));?>
    <div class="form-group">
        <?= $this->Form->input('User.email', array(
            'div' => false,
            'label' => false,
            'placeholder' => 'е-пошта',
            'class' => 'form-control',
            'required' => true,
        ));?>
        <?= $this->Form->input('User.code', array(
            'div' => false,
            'label' => false,
            'placeholder' => 'сериски број',
            'class' => 'form-control',
            'required' => true,
        ));?>
        <?= $this->Form->button('<i class="fa fa-user"></i>', array('type' => 'submit', 'class' => 'btn btn-primary', 'escape' => false));?>
    </div>
<?= $this->Form->end();?>
现在,当我使用
$this->Auth->login($this->request->data)
$this->Auth->login($this->request->data['User'])
时,它可以工作,但当我只使用
$this->Auth->login()
时它不能工作。我可以通过使用
$this->request->data
登录,然后手动将其余的用户数据放在以后可用的位置来解决问题,但我想知道为什么会发生这种情况。有什么想法吗

编辑

因此,正如Karthik Keyan提到的哈希,我认为这就是问题所在。CakePHP自动对密码(代码字段)进行哈希运算,我不希望它这样做。因此,我创建了一个名为NoPasswordHasher的自定义hasher类,如下所示:

App::uses('AbstractPasswordHasher', 'Controller/Component/Auth');

class NoPasswordHasher extends AbstractPasswordHasher {
    public function hash($password) {
        return $password;
    }

    public function check($password, $hashedPassword) {
        return $password == $hashedPassword;
    }
}
并在Auth组件中使用它:

'Auth' => array(
    'authenticate' => array(
        'Form' => array(
            'userModel' => 'User',
            'fields' => array('username' => 'email', 'password' => 'code'),
            'scope' => array('activated' => true),
            'passwordHasher' => 'No',
        ),
    ),

现在可以了。谢谢。

告诉您可以显示哪些类型的错误。请检查是否可以将密码存储为哈希(salt)格式。

密码(代码)未哈希,应以原始格式进行检查。Cakephp 2.6。您指出了问题所在,现在我正在寻找一种方法来禁用Auth组件的自动哈希。我认为cakephp只能支持salt密码。我无法禁用密码哈希?请您解释一下您的问题,我不明白
'Auth' => array(
    'authenticate' => array(
        'Form' => array(
            'userModel' => 'User',
            'fields' => array('username' => 'email', 'password' => 'code'),
            'scope' => array('activated' => true),
            'passwordHasher' => 'No',
        ),
    ),