我无法使用CakePHP 2.1中的电子邮件登录,当我尝试使用用户名时,它的工作效果非常好。
以下是代码
<?php
echo $this->Form->create();
echo $this->Form->input('email');
//echo $this->Form->input('username');
echo $this->Form->input('password');
echo $this->Form->end('Login');
?>
<?php
public function login(){
if ($this->request->is('post')){
if ($this->Auth->login()){
$this->redirect($this->Auth->redirect());
} else {
$this->Session->setFlash(__('Invalid email and password'));
}
}
}
?>
<?php
App::uses('AuthComponent', 'Controller/Component');
class User extends AppModel {
public function beforeSave(){
if (isset($this->data[$this->alias]['password'])){
$this->data[$this->alias]['password'] = AuthComponent::password($this->data[$this->alias]['password']);
}
return true;
}
}
?>
id Auto_Increment
username
email
password
role
我不知道,为什么它不接受任何用于登录的电子邮件ID,而是用于用户名的工作良好。
答案 0 :(得分:3)
阅读CakePHP书籍的this section。
以下是该部分的示例,您需要配置表单身份验证,以便为用户名使用不同的字段。
public $components = array(
'Auth' => array(
'authenticate' => array(
'Form' => array(
'fields' => array('username' => 'email')
)
)
)
);