将密码与Symfony 2生成的Hashed + Salt进行比较

时间:2013-12-10 12:52:34

标签: php symfony passwords

我试图在Symfony 2生成的Mysql数据库中验证用户。在Security.yml我有这个:

security:
    encoders:
        "FOS\UserBundle\Model\UserInterface": sha512

在用户表中有2个字段:SaltPassword

所有密码都是这样的:

YqkYUe0pV/TAw12aG2UcBax0hnJNeHez/S0uBGbnDDBxWD2Yeetqm4DfMn/8WKILIeRpM7ncTJ9coYOiNPGeOA==

我正在使用Web服务来使用PHP对用户进行身份验证。我没有必要使用哪些功能来比较普通密码和加密密码?

2 个答案:

答案 0 :(得分:0)

您必须从容器中获取密码编码器工厂。

你可以这样做:

$factory = $container->get('security.encoder_factory'); //$container refers to your container, it can be also $this->container
$user = new Your\Bundle\Entity\User();

$encoder = $factory->getEncoder($user);
$encodedPassword = $encoder->encodePassword($nonEncodedPassword, $user->getSalt());

这应该足够了。当然,你可以“手动”设置第二个encodePassword参数作为用于编码所有密码的盐。它通常在您的用户实现类中定义,这就是我们为此提供实体实例化对象的原因。

答案 1 :(得分:0)