2009-09-30 78 views
2

PRO的簡短問題。 ZendX_Db_Adapter是否可以使用Zend_Auth_Adapter_DbTable? 我已經試過這樣: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: 開捕致命錯誤:傳遞給Zend_Auth的參數1 ::身份驗證()必須實現的接口了Zend_Auth_Adapter_Interface,沒有給出,稱爲d:\ XAMPP \ htdocs中\ liquisales-在線\程序\ \控制器上IndexController.php線35並在第115行D:\ xampp \ htdocs \ liquisales-online \ library \ Zend \ Auth.php中定義了

任何提示? Btw。在的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的正確方法。起初,我們不得不使用大寫字母作爲列名。此外,我忘記了通過適配器。

下面是正確的代碼。

$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

ZendX_Db_Adapter IST registerd看來你的適配器沒有實現所有的方法需要....所以你就必須自己編寫驗證。