Zend_Auth和Firebird DB

时间:2009-09-30 07:59:42

标签: firebird zend-auth

PRO的一个简短问题。 可以在ZendX_Db_Adapter中使用Zend_Auth_Adapter_DbTable吗? 我试过这个:

$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 :: authenticate()的参数1必须实现接口Zend_Auth_Adapter_Interface,没有给出,在第35行的D:\ xampp \ htdocs \ liquisales-online \ application \ controllers \ IndexController.php中调用并在D中定义:第115行\ xampp \ htdocs \ liquisales-online \ library \ Zend \ Auth.php

任何提示? 顺便说一句。 ZendX_Db_Adapter在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 个答案:

答案 0 :(得分:2)

好的,这是使用Zend_Auth的Firebird DB的正确方法。 起初我们不得不使用国会大厦字母作为列名。 此外,我忘了通过适配器。

这是正确的代码。

$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 :(得分:1)

似乎你的适配器没有实现所需的所有方法....所以你必须自己编写身份验证代码。