Может ли кто-нибудь сказать мне, что использовать следующий оператор и как он работает в Zend Framework?
setCredentialTreatment ('SHA1 (CONCAT (?,
salt
))');
- Zend Framework: определение того, какой контроллер или страница, на которой вы используете / находитесь
- Как удалить элементы dd и dt html при рендеринге элемента Form в ZF?
- Обновлено: лучшие методы управления статическим контентом в Zend Framework?
- Нужно руководство для начала с Zend ACL
- Интеграция доктрины с приложением Zend Framework 1.8
- Zend_Config_Xml странное поведение
Попробуйте вот так:
$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(?)');