setCredentialTreatment 在 Zend 框架中的工作原理


How setCredentialTreatment works in Zend framework

谁能告诉我以下语句有什么用以及它在Zend Framework中是如何工作的?

setCredentialTreatment('SHA1(CONCAT(?, salt (('(;

setCredentialTreatment告诉身份验证适配器如何根据数据库中的密码(或再次检查的任何密码(检查用户提供的密码。在您的示例中,?是表示密码的占位符,CONCAT()SHA1()都是数据库函数。因此,此示例会将盐附加到用户输入的密码,然后使用 SHA1 对其进行哈希处理。

这将导致类似于以下内容的数据库查询:

从用户中选择 ID,其中电子邮件 = "user@example.com"和密码 = SHA1(CONCAT("密码",盐((

您可以使用setCredentialTreatment()更改密码的检查方式。例如,如果您的密码只是直接的 MD5 哈希,则可以改为使用:

setCredentialTreatment('MD5(?)');

尝试如下:

            $auth = Zend_Auth::getInstance();
            $authAdapter = new Zend_Auth_Adapter_DbTable(
                Zend_Db_Table::getDefaultAdapter(),
                'users',
                'username',
                'password',
                "CONCAT('$this->_salt', sha(?))"
            );
            $authAdapter->setIdentity($username)
                ->setCredential($password);