谁能告诉我以下语句的用途以及它在 Zend Framework 中的工作原理?
setCredentialTreatment('SHA1(CONCAT(?,
salt
))');
谁能告诉我以下语句的用途以及它在 Zend Framework 中的工作原理?
setCredentialTreatment('SHA1(CONCAT(?,
salt
))');
setCredentialTreatment
告诉身份验证适配器如何检查用户提供的密码与数据库中的密码(或再次检查的任何密码)。在您的示例中, the?
是表示密码的占位符,并且CONCAT()
和SHA1()
都是数据库函数。所以这个例子会将盐附加到用户输入的密码中,然后使用 SHA1 对它们进行哈希处理。
这将产生一个类似于以下内容的数据库查询:
SELECT id FROM users WHERE email = 'user@example.com' AND password = SHA1(CONCAT('password',salt))
您用于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);