2010-03-18 5 views
2

Войти Форма:Zend_Auth несколько учетных данных?

$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; 
} 

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

->setCredential(1); 

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

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

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

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

EDIT:

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

работы :)

ответ

1

Вы должны изменить свой адаптер следующим образом:

$authAdapter = new Zend_Auth_Adapter_DbTable(
    $db, 
    'user', 
    'email', 
    'password', 
    'MD5(?) AND `enabled` = "true"'); 
1

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

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

и удалить:

->setCredential(1); 
+0

Это не сработало. Infact I изменил 'AND 'enabled' =" 1 "' на 'AND jimmy = blah', и он все еще вошел в систему, заставив меня поверить, что его игнорировали последнее поле! – azz0r

+0

Посмотреть последнее сообщение: Это было: \t \t $ authAdapter = новый Zend_Auth_Adapter_DbTable ($ db, 'Пользователь', 'email', 'password', '(?) AND 'enabled' = 1'); – azz0r

+0

как об этом: $ authAdapter = новый Zend_Auth_Adapter_DbTable ($ db, 'Пользователь', 'email', 'password'); , а затем $ select = $ authAdapter-> getDbSelect(); $ select-> где ('enabled = 1'); $ authAdapter-> authenticate(); какая версия ZF вы используете? thx –

0

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

$select = $authAdapter->getDbSelect(); 
$select->where("isActive = ?","Active"); 
Смежные вопросы