我正在使用 Zend_Db 连接到 postgres 数据库。我想在数据库中使用一些函数,一个是内置的(digest() 函数),其他的是非核心的。
有没有办法让 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 也可能有帮助