Symfony: ircmaxwell / password-compat - $ encoder-> encodePassword возвращает false

0

У меня есть сервер с версией 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 и этом материале, поэтому я просто не понимаю, почему это происходит. Может ли кто-нибудь дать мне подсказку, почему это не работает?

Заранее спасибо.

Теги:
bcrypt

1 ответ

0
Лучший ответ

Оказывается, я не видел очевидного. В библиотеке паролей-совместимости четко указано, что для нее требуется php> = 5.3.7. Ну, получается, что моя версия php - 5.3.3., Поэтому неудивительно, что это не сработает. Поскольку обновление сервера не является вариантом, я откажусь от bcrypt и использую что-то еще.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню