谁能告诉我以下语句有什么用以及它在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);