如何使用用户名或电子邮件ID进行登录

时间:2009-10-05 15:32:34

标签: cakephp

我正在开发cakephp的网站。 我想使用用户名或emailid提供登录设施。

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

登录失败时再次尝试重新登录。 但直到现在我还没有成功。

任何人都可以向我推荐任何其他想法或我缺少的东西。 我也打算使用autorediret。

1 个答案:

答案 0 :(得分:3)

由于您可以在AuthComponent回调中设置beforeFilter,我认为您还应该可以在那里进行切换:

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();
    }
}