向专业人士提出一个简短的问题。 是否可以将 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();
但是这不起作用。 错误消息: 可捕获的 fatal error :传递给 Zend_Auth::authenticate() 的参数 1 必须实现接口(interface) 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"
最佳答案
好的,这是使用 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);
关于firebird - Zend_Auth 和 Firebird DB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1496683/