0

Zend_Db を使用して postgres データベースに接続しています。データベースでいくつかの関数を使用したいのですが、1 つは組み込み (digest() 関数) で、もう 1 つはコア以外の関数です。

Zend_Db や Zend_Auth がそれらを使用できるようにする方法はありますか? 現在、ダイジェスト機能が取り除かれているように見えるため、ソルトを使用してパスワードを保存することはできません (たとえば)。組み込みの UUID 関数を使用するなどの他の機能も機能しません。

4

1 に答える 1

0

パスワードとダイジェスト機能の問題は、データベースに独自の機能を定義することで解決できます。次に例を示します。

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 も役立つ場合があります

于 2011-12-28T16:33:46.200 に答える