Как работает setCredentialTreatment в рамках Zend

Может ли кто-нибудь сказать мне, что использовать следующий оператор и как он работает в Zend Framework?

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

Solutions Collecting From Web of "Как работает setCredentialTreatment в рамках Zend"

Попробуйте вот так:

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

setCredentialTreatment сообщает адаптеру auth, как проверять пароль, предоставленный пользователем, по отношению к тому, который находится в базе данных (или какие-либо пароли проверяются снова). В вашем примере ? является заполнителем, представляющим пароль, и CONCAT() и SHA1() являются одновременно функциями базы данных. Таким образом, этот пример добавит соль к введенному пользователем паролю и затем хэш их с помощью SHA1.

Это приведет к запросу базы данных, которое выглядит примерно так:

SELECT id FROM users WHERE email = 'user@example.com' И пароль = SHA1 (CONCAT ('пароль', соль))

Вы используете setCredentialTreatment() чтобы изменить способ проверки паролей. Например, если ваши пароли являются просто прямыми хешами MD5, вы вместо этого используете:

 setCredentialTreatment('MD5(?)');