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

Bin*_*das 5 cakephp

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

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

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

任何人都可以向我提出任何其他想法,或者我缺少什么.我也贬低了autorediret.

dei*_*zel 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
    }
}
Run Code Online (Sandbox Code Playgroud)

如果这不起作用,您可能需要尝试更早的过滤器,例如beforeRender,因为您需要在 之前触发代码AuthComponent::startup()。作为最后的手段,您可以扩展 AuthComponent

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

    function startup() {
        # your code here
        parent::startup();
    }
}
Run Code Online (Sandbox Code Playgroud)