2

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: Catchable fatal error: Argument 1 passed to Zend_Auth::authenticate() must implement interface Zend_Auth_Adapter_Interface, none given, 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

さて、これが 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);
于 2009-09-30T11:09:54.443 に答える
1

アダプターが必要なすべてのメソッドを実装していないようです....そのため、認証を自分でコーディングする必要があります。

于 2009-09-30T08:07:32.467 に答える