Как сделать логин используя имя пользователя или адрес электронной почты - PullRequest
5 голосов
/ 05 октября 2009

Я занимаюсь разработкой сайта на cakephp. Я хочу предоставить возможность входа в систему, используя имя пользователя или emailid.

Я использую. $ this-> Auth-> fields ['email'] = 'username';

при неудачной попытке входа в систему и повторите попытку. Но до сих пор у меня нет успеха.

Может ли кто-нибудь предложить мне какую-либо другую идею по этому поводу или по тому, чего мне не хватает. Я также отключил автоответчик.

1 Ответ

3 голосов
/ 06 октября 2009

Так как вы можете настроить 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(). В крайнем случае, вы можете расширить AuthComponent :

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

    function startup() {
        # your code here
        parent::startup();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...