У меня есть сервер с версией PHP менее 5.5, и я пытаюсь запрограммировать аутентификацию пользователя с помощью bcrypt в Symfony. Поэтому я установил ircmaxwell/password-compat, но по какой-то причине кодер всегда возвращает false. Что я делаю:
$factory = $this->get('security.encoder_factory');
$encoder = $factory->getEncoder($user);
$encoded = $encoder->encodePassword('test', $user->getSalt());
die($encoded);
$ encoded всегда пуст. Я проверил, вызывается password.php в ircmaxwell и возвращает false в этой строке:
if (!is_string($ret) || PasswordCompat\binary\_strlen($ret) != $resultLength) {
return false;
}
потому что длина строки равна 13, но resultLength равно 60. Я мало знаю о bcrypt и этом материале, поэтому я просто не понимаю, почему это происходит. Может ли кто-нибудь дать мне подсказку, почему это не работает?
Заранее спасибо.
Оказывается, я не видел очевидного. В библиотеке паролей-совместимости четко указано, что для нее требуется php> = 5.3.7. Ну, получается, что моя версия php - 5.3.3., Поэтому неудивительно, что это не сработает. Поскольку обновление сервера не является вариантом, я откажусь от bcrypt и использую что-то еще.