Zend框架中如何setCredentialTreatment作品(How setCredentia

2019-09-17 10:15发布

谁能告诉我什么是使用下面的语句中,以及如何在Zend框架的工作?

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

Answer 1:

尝试这样的:

            $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);


Answer 2:

setCredentialTreatment告诉AUTH适配器如何对一个数据库(或任何密码被再次检查)检查用户提供的密码。 在您的例子中, ? 是表示密码和占位符CONCAT()SHA1()均为数据库功能。 所以这个例子将盐添加到用户输入的密码,然后使用SHA1哈希他们。

这将导致数据库查询,看起来类似于这样:

SELECT ID FROM用户WHERE电子邮件= 'user@example.com' 和密码= SHA1(CONCAT( '密码',盐))

您可以使用setCredentialTreatment()来更改密码是如何检查。 例如,如果您的密码只是直MD5哈希值,你会改用:

setCredentialTreatment('MD5(?)');


文章来源: How setCredentialTreatment works in Zend framework