У меня есть сервер с версией 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);
$ кодированный всегда пуст. Я проверил, пароль.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 и воспользуюсь чем-то другим.
Других решений пока нет …