Zend_Auth несколько учетных данных? - PullRequest
2 голосов
/ 18 марта 2010

Форма входа:

    $authAdapter    = Zend_Registry::get('authAdapter');
    $authAdapter
  ->setIdentity($formData['email'])
  ->setCredential($password)
  ->setCredential(1);

Bootstrap:

    protected function _initAuth(){
    $this->bootstrap('db');
    $this->bootstrap('session');

    $db             = $this->getPluginResource('db')->getDbAdapter();
    $auth           = Zend_Auth::getInstance();
    $authAdapter    = new Zend_Auth_Adapter_DbTable($db, 'User', 'email', 'password', 'enabled');

    Zend_Registry::set('authAdapter', $authAdapter);
    return $authAdapter;
}

Очевидно, что после добавления 'enabled' он перестал работать, если я удалю:

->setCredential(1);

и 'включено' оттуда:

($db, 'User', 'email', 'password', 'enabled');

работает просто отлично ...

Я бы хотел, чтобы только пользователи, у которых есть активированная учетная запись, могли войти в систему.

РЕДАКТИРОВАТЬ:

        $authAdapter    = new Zend_Auth_Adapter_DbTable($db, 'User', 'email', 'password', '(?) AND `enabled` = 1');

работает:)

Ответы [ 3 ]

1 голос
/ 18 марта 2010

пожалуйста, попробуйте:

$authAdapter    = new Zend_Auth_Adapter_DbTable($db, 'User', 'email', 'password', 'AND enabled      > 1');

и удалите:

->setCredential(1);
1 голос
/ 18 марта 2010

Вам нужно изменить свой адаптер так:

$authAdapter = new Zend_Auth_Adapter_DbTable(
    $db,
    'user',
    'email',
    'password',
    'MD5(?) AND `enabled` = "true"');
0 голосов
/ 06 февраля 2013

Вы можете установить дополнительные условия в адаптере аутентификации, т.е.

$select = $authAdapter->getDbSelect();
$select->where("isActive = ?","Active");
...