Cakephp 认证->;login()函数工作不正常
下面是AppController.php中的组件声明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'
'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',
),
),