Zend Framework - Auth: дополнительная проверка - PullRequest
1 голос
/ 24 августа 2011

Я хочу проверить пользовательскую таблицу на статус = 1 в качестве дополнительной проверки.Мой метод getAuthAdapter () выглядит следующим образом:

private function getAuthAdapter (){
    $authAdapter = new Zend_Auth_Adapter_DbTable(Zend_Db_Table::getDefaultAdapter());
    $authAdapter->setTableName('vi_users')
                ->setIdentityColumn('email')
                ->setCredentialColumn('password');
    return $authAdapter;
}

Как бы изменить это, чтобы включить дополнительную проверку?

Ответы [ 2 ]

2 голосов
/ 24 августа 2011

Я сам столкнулся с этой проблемой, и я не уверен, что можно проверить другой столбец одновременно.Так что я делаю это прямо в обратном направлении, примерно так:

$auth = Zend_Auth::getInstance();

....

if (process($form->getValues())) {
    // login credentials are correct, so we now need to check if their account is activated
    if ($auth->getIdentity()->active != 1) {
        // if not, log them out and tell them to activate
        Zend_Auth::getInstance()->clearIdentity();
        $output .= "Your account has not yet been activated, please check your email (including spam bin) for the activation link.";
    } else {
        // if they're active then login is successful
        $output .= "You are now logged in";
    }
} else {
   // username/password wrong
   $output .= "Credentials invalid";
}

Обновление: Учитывая ответ Орландо, похоже, что то, о чем вы просили изначально, возможно.Вы можете использовать мое решение, хотя, если вы хотите различить значение status как «неправильное», так и значение «user / pass» неправильное.

1 голос
/ 24 августа 2011

Вы можете сделать что-то вроде:

$adapter = new Zend_Auth_Adapter_DbTable(
    $db,
    'users',
    'username',
    'password',
    'MD5(?) AND status = 1'
);

где $ db будет Zend_Db_Table :: getDefaultAdapter ()

Взято из http://framework.zend.com/manual/en/zend.auth.adapter.dbtable.html

...