5

我用它来编码我的密码:

 $entity->setSalt(md5(time()));
 $encoder = new MessageDigestPasswordEncoder('sha1');
 $password = $encoder->encodePassword($editForm->get('password')->getData(), $entity->getSalt());
 $entity->setPassword($password);

但 relizar 怎么会反其道而行之呢?也就是说,我怎样才能得到未加密的密码?如果我用这个

$entity->getPassword()

给我看这个:

xOGjEeMdi4nwanOustbbJlDkug8=

非常感谢你的答复。我正在尝试创建一个表单,用户可以在其中输入旧密码并验证它是否正确。以我的形式:

            ->add('antigua', 'password', array('property_path' => false))
        ->add('password', 'repeated', array('first_name' => 'Nueva contraseña','second_name' => 'Repite contraseña','type' => 'password'));

当我去编辑crud中的用户时,我有这个:在更新操作中:

public function updateAction($id)
    {
        $em = $this->getDoctrine()->getEntityManager();

        $entity = $em->getRepository('miomioBundle:Empleado')->find($id);

        if (!$entity) {
            throw $this->createNotFoundException('Unable to find Empleado entity.');
        }

        $editForm   = $this->createForm(new EmpleadoType(), $entity);
        $deleteForm = $this->createDeleteForm($id);

        $request = $this->getRequest();
        **$entity->getPassword() is blank why?**
        $editForm->bindRequest($request);

        if ($editForm->isValid()){
            $em->persist($entity);
            $em->flush();
        }
            return $this->redirect($this->generateUrl('empleado_edit', array('id' => $id)));

        return array(
            'entity'      => $entity,
            'edit_form'   => $editForm->createView(),
            'delete_form' => $deleteForm->createView(),
        );
    }

问题是我无法获得编码密码为空白。(在分贝是正确的)谢谢

4

2 回答 2

4

您应该以与旧密码相同的方式加密,即用户输入的密码。结果加密密码应该是一样的。

$encoder = new MessageDigestPasswordEncoder('sha1');
$password = $encoder->encodePassword($editForm->get('antigua')->getData(), $entity->getSalt());

现在您可以将旧的加密密码与新用户输入的密码进行比较...

于 2013-07-11T16:45:07.527 回答
2

无法解密以 sha1 或 md5 编码的密码,这些加密方法被创建为不可能被解密!

自定义编码器:

唯一的方法是使用自制方法创建自己的自定义编码器来加密(并解密)您的密码,这里是一个示例:http ://blogsh.de/2011/09/29/create-a-custom-password -symfony 的编码器/

您不必在 encodePassword() 中使用 $salt,例如,您可以将每个字母替换为特定数字,以便您可以通过相反的操作来检索密码,您也可以削减盐并在密码中添加部分, ETC...

纯文本,不推荐:

或者不太推荐,不要加密你的密码,让他们明文:

# app/config/security.yml
security:
    encoders:
        Symfony\Component\Security\Core\User\User: plaintext
于 2012-10-27T15:42:36.410 回答