2009-10-05 129 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(); 
    } 
} 
相关问题