0

CakePHP 2.1 で電子メールを使用してログインできません。ユーザー名で試してみると、完全にうまく機能します。

以下はコードです

表示: login.ctp

<?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');
?>

コントローラ: UsersController.php

<?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'));
            }
        }
    }
?>      

モデル:User.php

<?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;
    }
}
?>  

データベース構造 : users テーブル

id Auto_Increment
username
email
password
role

ログイン用の電子メールIDを受け入れないのに、ユーザー名の場合はうまく機能する理由がわかりません。

4

1 に答える 1

3

CakePHP ブックのこのセクションを読んでください。

そのセクションの例を次に示します。ユーザー名に別のフィールドを使用するようにフォーム認証を構成する必要があります。

public $components = array(
    'Auth' => array(
        'authenticate' => array(
            'Form' => array(
                'fields' => array('username' => 'email')
            )
        )
    )
);
于 2012-06-13T13:52:56.690 に答える