Zend_Db和Zend_Auth中的数据库特定函数

时间:2011-04-10 16:03:57

标签: zend-db zend-auth

我正在使用Zend_Db连接到postgres数据库。我想在数据库中使用一些函数,一个是内置的(digest()函数),另一个函数是非核心函数。

有没有办法允许Zend_Db和/或Zend_Auth使用它们?目前它似乎剥离了摘要功能,所以我不能用盐存储密码(例如),其他功能如使用内置的UUID功能也不起作用。

1 个答案:

答案 0 :(得分: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也可能有帮助