Zend_Db を使用して postgres データベースに接続しています。データベースでいくつかの関数を使用したいのですが、1 つは組み込み (digest() 関数) で、もう 1 つはコア以外の関数です。
Zend_Db や Zend_Auth がそれらを使用できるようにする方法はありますか? 現在、ダイジェスト機能が取り除かれているように見えるため、ソルトを使用してパスワードを保存することはできません (たとえば)。組み込みの UUID 関数を使用するなどの他の機能も機能しません。
パスワードとダイジェスト機能の問題は、データベースに独自の機能を定義することで解決できます。次に例を示します。
CREATE OR REPLACE FUNCTION sha1(character varying)
RETURNS character varying AS
BEGIN
RETURN ENCODE(digest($1, 'sha1'), 'hex');
END;
LANGUAGE plpgsql
そして承認のために:
$authAdapter = new Zend_Auth_Adapter_DbTable(Zend_Registry::get('db'));
$authAdapter->setTableName('users')
->setIdentityColumn('login')
->setCredentialColumn('password')
->setIdentity($username)
->setCredential($password);
$authAdapter->setCredentialTreatment(
"SHA1(CONCAT(?,salt))"
);
Zend_Db_Expr も役立つ場合があります