Ale*_*lex 1 php cakephp cakephp-2.0
我目前正在尝试将cakephp登录名从使用用户名字段更改为使用电子邮件字段.
使用用户名字段时,登录工作正常,这是使用用户名登录的代码:
login.ctp
<?php
echo $this->Form->create('User');
echo $this->Form->input('username');
echo $this->Form->input('password');
echo $this->Form->end(__('Login'));
?>
Run Code Online (Sandbox Code Playgroud)
UsersController.php
public function beforeFilter() {
parent::beforeFilter();
$this->Auth->allow('add', 'login'); // Letting users register themselves
$this->Auth->fields = array('username' => 'username', 'password' => 'password');
}
public function login() {
if ($this->request->is('post')) {
if ($this->Auth->login()) {
$this->Session->setFlash(__('worked'));
} else {
debug($this->data);
$this->Session->setFlash(__('Invalid username or password, try again'));
}
}
}
Run Code Online (Sandbox Code Playgroud)
AppController的
public $components = array('Session', 'Auth');
Run Code Online (Sandbox Code Playgroud)
所以一切正常,我可以登录测试细节.
因此,要将此更改为使用电子邮件,我所做的就是:
将login.ctp中的输入从用户名更改为电子邮件
echo $this->Form->input('email');
Run Code Online (Sandbox Code Playgroud)将userscontroller中的fields数组从username更改为email
$this->Auth->fields = array('username' => 'email', 'password' => 'password');
Run Code Online (Sandbox Code Playgroud)将数据库字段从用户名更改为电子邮件
然后我尝试使用相同的测试详细信息登录,它告诉我他们是不正确的.
有谁知道为什么这不起作用?
在Cake 2.x中,它有点不同
$this->Auth->authenticate = array(
'Form' => array(
'fields' => array('username' => 'email', 'password' => 'password'),
),
);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4183 次 |
| 最近记录: |