2009-09-30 2 views
2

Короткий вопрос для PRO. Можно ли использовать Zend_Auth_Adapter_DbTable с ZendX_Db_Adapter? Я попытался это:Zend_Auth и Firebird DB

$adapter = new Zend_Auth_Adapter_DbTable(
    Zend_Registry::get('db') 
); 
$adapter->setTableName('USERS') 
    ->setIdentityColumn('username') 
    ->setCredentialColumn('password') 
    ->setIdentity('FOO') 
    ->setCredential('BAR'); 
$auth = Zend_Auth::getInstance(); 
$result = $auth->authenticate(); 

Но это не работает. ErrorMsg: Catchable фатальная ошибка: Аргумент 1 передается Zend_Auth :: Authenticate() должен реализовать интерфейс Zend_Auth_Adapter_Interface, никто не дал, названный в D: \ XAMPP \ HTDOCS \ liquisales-онлайн \ Application \ Контроллеры \ IndexController.php на линии 35 и определен в D: \ xampp \ htdocs \ liquidisales-online \ library \ Zend \ Auth.php в строке 115

Любые подсказки? КПП. ZendX_Db_Adapter IST Registerd в Application.ini

resources.db.adapter = Firebird 
resources.db.params.dbname = "/var/db/liquisales.FDB" 
resources.db.params.host = "127.0.0.1" 
resources.db.params.username = sysdba 
resources.db.params.password = masterkey 
resources.db.params.adapterNamespace = "ZendX_Db_Adapter" 

ответ

2

Хорошо, вот правильный способ использования Firebird DB с Zend_Auth. Сначала нам приходилось использовать буквы capitol для имен столбцов. Кроме того, я забыл передать адаптер.

Вот правильный код.

$adapter = new Zend_Auth_Adapter_DbTable(
    Zend_Registry::get('db') 
); 
$adapter->setTableName('USERS') 
    ->setIdentityColumn('USERNAME') 
    ->setCredentialColumn('PASSWORD') 
    ->setIdentity($loginForm->getValue('kunummer')) 
    ->setCredential($loginForm->getValue('passwd')); 
$auth = Zend_Auth::getInstance(); 
$result = $auth->authenticate($adapter); 
1

, кажется, ваш адаптер не реализует все методы необходимы .... так что вы бы в код аутентификации самостоятельно.

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