Symfony: ircmaxwell/password-compat - $encoder->encodePassword returns 错误
Symfony: ircmaxwell/password-compat - $encoder->encodePassword returns false
我有一台 PHP 版本低于 5.5 的服务器,我正在尝试使用 Symfony 中的 bcrypt 编写用户身份验证程序。所以我安装了 ircmaxwell/password-compat 但由于某种原因,编码器总是 returns 错误。我做的是:
$factory = $this->get('security.encoder_factory');
$encoder = $factory->getEncoder($user);
$encoded = $encoder->encodePassword('test', $user->getSalt());
die($encoded);
$encoded 总是空的。我检查过,ircmaxwell 中的 password.php 被调用并且它 returns 在这一行中是错误的:
if (!is_string($ret) || PasswordCompat\binary\_strlen($ret) != $resultLength) {
return false;
}
因为字符串的长度是13,但是resultLength是60。我对bcrypt和这些东西了解不多,所以我不明白为什么会这样。任何人都可以提示我为什么这不起作用吗?
提前致谢。
原来我没有看到明显的东西。 password-compat 库在要求下明确指出它需要 php >= 5.3.7。
好吧,原来我的 php 版本是 5.3.3.,难怪它不起作用。
由于更新服务器不是一个选项,我将放弃 bcrypt 并使用其他东西。
我有一台 PHP 版本低于 5.5 的服务器,我正在尝试使用 Symfony 中的 bcrypt 编写用户身份验证程序。所以我安装了 ircmaxwell/password-compat 但由于某种原因,编码器总是 returns 错误。我做的是:
$factory = $this->get('security.encoder_factory');
$encoder = $factory->getEncoder($user);
$encoded = $encoder->encodePassword('test', $user->getSalt());
die($encoded);
$encoded 总是空的。我检查过,ircmaxwell 中的 password.php 被调用并且它 returns 在这一行中是错误的:
if (!is_string($ret) || PasswordCompat\binary\_strlen($ret) != $resultLength) {
return false;
}
因为字符串的长度是13,但是resultLength是60。我对bcrypt和这些东西了解不多,所以我不明白为什么会这样。任何人都可以提示我为什么这不起作用吗?
提前致谢。
原来我没有看到明显的东西。 password-compat 库在要求下明确指出它需要 php >= 5.3.7。 好吧,原来我的 php 版本是 5.3.3.,难怪它不起作用。 由于更新服务器不是一个选项,我将放弃 bcrypt 并使用其他东西。