現在、cakephp ログインをユーザー名フィールドの使用からメール フィールドの使用に変更しようとしています。
ユーザー名フィールドを使用すると、ログインは正常に機能します。ユーザー名を使用したログインのコードは次のとおりです。
ログイン.ctp
<?php
echo $this->Form->create('User');
echo $this->Form->input('username');
echo $this->Form->input('password');
echo $this->Form->end(__('Login'));
?>
ユーザーコントローラー.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'));
}
}
}
AppController
public $components = array('Session', 'Auth');
したがって、これはすべて正常に機能し、テストの詳細でログインできます。
したがって、これを電子メールを使用するように変更するには、次のことを行います。
login.ctp の入力をユーザー名からメールに変更します
echo $this->Form->input('email');
userscontroller の fields 配列を username から email に変更します
$this->Auth->fields = array('username' => 'email', 'password' => 'password');
データベース フィールドをユーザー名から電子メールに変更します
次に、同じテストの詳細を使用してログインしようとすると、それらが間違っていることがわかります。
なぜこれがうまくいかないのか、誰にも分かりますか?