Аутентификация с помощью адреса электронной почты в CakePHP v2.0 - PullRequest
0 голосов
/ 18 января 2012

Да, этот вопрос похож на вопрос, который я недавно задавал о переполнении стека, но я просто использую код из CakePHP Book, а не собственный код, чтобы попытаться понять, почему что-то не работает.

По сути, идея состоит в том, чтобы позволить пользователю войти в систему, используя свой адрес электронной почты, а также имя пользователя в версии 2.0 Cake.Однако всегда возвращается, что детали неверны, но я все равно могу войти в систему с именем пользователя, поэтому в основном переопределение в AppController ничего не меняет ... Более того, я пытаюсь выяснить, как разрешить оба поля для входа в систему.

Как обсуждалось в оригинальном сообщении здесь: Логин с адресом электронной почты или именем пользователя в CakePHP v2.0 @nIcO соединил что-то, что может работать в обоих случаях, но проблема, объясненная здесь, вызываетэто не сработает.

Есть идеи?Кто-нибудь получил адрес электронной почты, работающий с версией 2.0.

// AppController

public $components = array(
    'Auth' => array(
        'loginAction' => array(
            'controller' => 'users',
            'action' => 'login'
        ),
        'authenticate' => array(
            'Form' => array(
                'fields' => array('username' => 'email')
            )
        )
    )
);

// UsersController

public function login() {
    if ($this->request->is('post')) {
        if ($this->Auth->login()) {
            return $this->redirect($this->Auth->redirect());
        } else {
            $this->Session->setFlash(__('Username or password is incorrect'), 'default', array(), 'auth');
        }
    }
}

Ответы [ 2 ]

2 голосов
/ 18 января 2012

Хотя id добавил его в UsersController (не в AppController), но это сработало для меня для электронной почты как имя пользователя:


public $components = array('Auth');

//beforeFilter in UsersController
function beforeFilter() {
   parent::beforeFilter();
        $this->Auth->loginAction = array('controller' => 'users', 'action' => 'login');
        $this->Auth->authenticate = array(
            'Form' => array(                
                'fields' => array('username' => 'email')
            )
        );
}

Надеюсь, это поможет каким-то образом

1 голос
/ 19 января 2012

Это лучшая реализация, которую я нашел: http://bin.cakephp.org/view/1831131032

Мне нравится, как некоторая логика была перемещена в Модель и очищает логику контроллера и делает ее более MVC.Надеюсь, это поможет другим.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...