Может ли кто-нибудь сказать мне, что использует следующий оператор и как он работает в Zend Framework?Как setCredentialTreatment работает в рамках Zend
setCredentialTreatment ('SHA1 (CONCAT (?,
salt
))');
Может ли кто-нибудь сказать мне, что использует следующий оператор и как он работает в Zend Framework?Как setCredentialTreatment работает в рамках Zend
setCredentialTreatment ('SHA1 (CONCAT (?,
salt
))');
Попробуйте так:
$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.
Это приведет запрос к базе данных, которая выглядит примерно так:
ВЫБРАТЬ идентификатор из пользователей, где электронная почта = «[email protected]» и пароль = SHA1 (CONCAT («пароль», соль))
Вы используете setCredentialTreatment()
, чтобы изменить порядок проверки паролей. Например, если ваши пароли только прямые MD5 хэши, вы бы вместо этого использовать:
setCredentialTreatment('MD5(?)');
родственный: http://stackoverflow.com/questions/3725873/zend- Auth-setcredentialtreatment –