Symfony2 动态。密码编码

Symfony2 dyn. password encoding

我正在尝试使用以下指南让自己的 UserBundle 在 sf 2.6.3 上工作:Symfony Book.

我已将该示例代码粘贴到用户实体中的 setPassword 方法中(尽管不知道它是否应该这样使用),并对其进行更改以适合(参见下面的代码)。

结果是,我收到错误 'field container not found in class [...]' 和 'method encodePassword not found in class [...]',但描述中缺少要使用的容器...

//MyProject\UserBundle\Entity\User.php
namespace MyProject\UserBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Security\Core\Role\Role;
use Symfony\Component\Security\Core\User\UserInterface;

//...

public function setPassword($password)
{
    $encoder = $this->container->get('security.password_encoder');
    $encoded = $encoder->encodePassword($this, $password);

    $this->password = $encoded;

    return $this;
}

//...

我只是错过了一个 use 语句,还是更复杂?我正在查找几个链接,但发现了几个使用容器的使用语句,所以我不知道哪个是正确的...有什么建议吗?

提前致谢;)

您需要定义一个方法 encodePassword,因为这不是原生的 SYmfony2 方法。例如,

private function encodePassword(User $user, $plainPassword)
{
    $encoder = $this->container->get('security.encoder_factory')
        ->getEncoder($user)
    ;

    return $encoder->encodePassword($plainPassword, $user->getSalt());
}