2009-09-30 27 views
2

Une question courte pour les PROs. Est-il possible d'utiliser Zend_Auth_Adapter_DbTable avec ZendX_Db_Adapter? J'ai essayé ceci:Zend_Auth et 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(); 

Mais cela ne fonctionne pas. Erreur fatale capturable: L'argument 1 passé à Zend_Auth :: authenticate() doit implémenter l'interface Zend_Auth_Adapter_Interface, aucun donné, appelé dans D: \ xampp \ htdocs \ liquisales-online \ application \ controllers \ IndexController.php en ligne 35 et défini dans D: \ xampp \ htdocs \ liquisales-online \ bibliothèque \ Zend \ Auth.php à la ligne 115

Des indices? Btw. ZendX_Db_Adapter ist registerd dans 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" 

Répondre

2

Bon, voici la bonne façon d'utiliser Firebird DB avec Zend_Auth. Au début, nous devions utiliser des lettres capitales pour les noms de colonnes. En outre, j'ai oublié de passer l'adaptateur.

Voici le bon code.

$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

il semble que votre adaptateur ne met pas en œuvre toutes les méthodes nécessaires .... donc vous devez coder vous-même l'authentification.