2009-10-05 19 views
5

cakephpでウェブサイトを開発しています。 ユーザー名またはemailidを使用してログインする機能を提供します。ユーザー名か電子メールIDを使用してログインする方法

私は使用しています。 $ this-> Auth-> fields ['email'] = 'username';

ログインが失敗したときにもう一度ログインを試みてください。 しかし、今まで私は成功していません。

他のアイデアを教えてもらえますか? 私はまたautorediretをdesabledしています。

答えて

3

あなたはbeforeFilterコールバックでAuthComponentを設定することができますので、私はあなたもそこにいくつかの切り替えを行うことができるはずと仮定します:

function beforeFilter() { 
    if (
     isset($this->data['User']['login']) && // login form has been posted 
     Validation::email($this->data['User']['login']) // value looks like an email 
    ) { 
     $this->Auth->fields = array('username' => 'email'); // change the db field 
    } 
} 

これが機能しない場合、あなたは試してみる必要があるかもしれませんbeforeRenderのような以前のフィルタを使用すると、AuthComponent::startup()より前にコードを起動する必要があるためです。最後の手段として、extend the AuthComponent

App::import('Component', 'AuthComponent'); 
class AppAuthComponent extends AuthComponent { 

    function startup() { 
     # your code here 
     parent::startup(); 
    } 
} 
関連する問題