2012-06-07 4 views
3

Для аутентификации на веб-сайте я использую Zend_Auth_Adapter_DbTable. Все работает нормально, но Zend Framework допускает уникальные идентификаторы в таблице.Идентификатор Zend_Auth_Adapter_DbTable не уникален

В качестве личности я использую почтовый адрес от своих пользователей. Проблема в том, что в таблице есть больше элементов с этим почтовым адресом. Пользователь может удалить эту учетную запись, и поэтому я не удаляю всю строку, я только изменяю статус на -2 или что-то еще. активный пользователь имеет статус 1.

я пытаюсь использовать его как так:

$authAdapter = new Zend_Auth_Adapter_DbTable($db, 'user', 'email', 'password', "? AND `status`='1'"); 
    $authAdapter->setIdentity($email); 
    $authAdapter->setCredential($password); 

Но это не работает. Если я удалю неактивного пользователя с тем же почтовым адресом, все будет работать. Почему это?

ответ

2

Вы можете сделать как этот

$authAdapter->setIdentity($email); 
$authAdapter->setCredential($password); 

$select = $authAdapter->getDbSelect(); 
$select->where('status = 1'); 

Попробуйте полный код

$authAdapter = new Zend_Auth_Adapter_DbTable($db, 'user', 'email', 'password'); 
    $authAdapter->setIdentity($email); 
    $authAdapter->setCredential($password); 
    $select = $authAdapter->getDbSelect(); 
      $select->where('status = "1"'); 

ИЛИ

$authAdapter = new Zend_Auth_Adapter_DbTable(Zend_Db_Table::getDefaultAdapter()); 

     $authAdapter->setTableName('user') 
      ->setIdentityColumn('email') 
      ->setCredentialColumn('password');  

     $select = $authAdapter->getDbSelect(); 
     $select->where('status = "1"'); 

[EDIT]
ИЛИ

$authAdapter = new Zend_Auth_Adapter_DbTable($db, 'user', 'email', 'password'); 
     $authAdapter->setIdentity($email); 
     $authAdapter->setCredential($password); 
$authAdapter->setCredentialTreatment('? and status = "1"'); 

FYI: zend.auth.adapter.dbtable

+0

Hm не работает. Если я var_dump выбор, вот так: var_dump ($ select -> __ toString()); Я получаю пустую строку. И каждый auth прав, даже если я использую неправильный пароль ... – volf

+0

проверить обновленный anwser – Venu

+0

какую версию вы используете? – Venu

Смежные вопросы