我试图在Symfony 2生成的Mysql数据库中验证用户。在Security.yml
我有这个:
security:
encoders:
"FOS\UserBundle\Model\UserInterface": sha512
在用户表中有2个字段:Salt
和Password
。
所有密码都是这样的:
YqkYUe0pV/TAw12aG2UcBax0hnJNeHez/S0uBGbnDDBxWD2Yeetqm4DfMn/8WKILIeRpM7ncTJ9coYOiNPGeOA==
我正在使用Web服务来使用PHP对用户进行身份验证。我没有必要使用哪些功能来比较普通密码和加密密码?
答案 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)