Специфичные для базы данных функции в Zend_Db и Zend_Auth - PullRequest
0 голосов
/ 10 апреля 2011

Я использую Zend_Db для подключения к базе данных postgres. Я хочу использовать некоторые функции в базе данных, одна встроена (функция digest ()), а другие - неосновные.

Есть ли способ разрешить Zend_Db и / или Zend_Auth использовать их? Похоже, что в настоящее время она исключает функцию дайджеста, поэтому я не могу хранить пароли с солью (например), другие функции, такие как использование встроенной функции UUID, также не работают.

1 Ответ

0 голосов
/ 28 декабря 2011

Проблема с паролями и функцией дайджеста, которую вы можете решить, определив свою собственную функцию в базе данных, например:

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 также может быть полезен

...