有谁能告诉我以下语句的用法以及它在Zend Framework中的工作原理?
setCredentialTreatment( 'SHA1(CONCAT(
salt
))?');
答案 0 :(得分:4)
setCredentialTreatment
告诉auth适配器如何检查用户提供的密码与数据库中的密码(或者再次检查的密码)。在您的示例中,?
是表示密码的占位符,CONCAT()
和SHA1()
都是数据库函数。因此,此示例将salt附加到用户输入的密码,然后使用SHA1散列它们。
这将导致数据库查询看起来类似于:
SELECT id FROM users WHERE email ='user@example.com'AND password = SHA1(CONCAT('password',salt))
您使用setCredentialTreatment()
更改密码的检查方式。例如,如果您的密码只是直接的MD5哈希值,那么您可以使用:
setCredentialTreatment('MD5(?)');
答案 1 :(得分:2)
试试这样:
$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);