2

给专业人士的一个简短问题。是否可以将 Zend_Auth_Adapter_DbTable 与 ZendX_Db_Adapter 一起使用?我试过这个:

$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:\xampp\htdocs\liquisales-online\library\Zend\Auth.php 在第 115 行

有什么提示吗?顺便提一句。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"
4

2 回答 2

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);
于 2009-09-30T11:09:54.443 回答
1

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

于 2009-09-30T08:07:32.467 回答