Я применил ZfcUser в своем приложении. Проблема в том, что аутентификация всегда терпит неудачу, даже если пароль правильный.Аутентификация ZfzUser всегда сбой
Я искал проблему. Я заметил, что приложение извлекает хэш пароля из пароля и передает его методу проверки Bcrypt.
Вот код из Зенда
if (!$bcrypt->verify($credential, $userObject->getPassword())) {
// Password does not match
$e->setCode(AuthenticationResult::FAILURE_CREDENTIAL_INVALID)
->setMessages(array('Supplied credential is invalid.'));
$this->setSatisfied(false);
return false;
}
Теперь Bcrypt проверить метод работает следующим образом.
public function verify($password, $hash)
{
$result = crypt($password, $hash);
return Utils::compareStrings($hash, $result);
}
мой пароль 'admin123'
, сгенерированный хэш сохраняется для него в базе данных "$2y$14$9QsDD3.T3xwCnZsMsiBft.fwLewL.0L5pyViAJY0EbNz0ECIGDi5u"
, но я вижу, что он никогда не будет соответствовать, потому что метод проверить использует значение хэша в качестве соли. Я делаю что-то неправильно, или есть какая-то ошибка в рамках /?
код, используемый для установки пароля в моем User Entity является
public function setPassword($password)
{
$bcrypt = new Bcrypt();
$bcrypt->setCost(14);
$this->password = $bcrypt->create($password);
}
Возможный дубликат метода проверки [Zend \ Crypt \ Password \ BCrypt] (http://stackoverflow.com/questions/32717509/zend-crypt-password-bcrypt-verify-method) – Wilt