2009-10-05 167 views
5

我正在cakephp開發一個網站。 我想給設施登錄使用用戶名或emailid。如何使用用戶名或電子郵件ID登錄

我正在使用。 $ this-> Auth-> fields ['email'] ='username';

當登錄失敗並嘗試再次登錄時。 但直到現在我還沒有成功。

任何人都可以建議我任何其他想法或我失蹤。 我也推薦autorediret。

回答

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(); 
    } 
} 
相關問題