Symfony2 dyn。密码编码

时间:2015-01-27 08:25:10

标签: php symfony-2.6

我尝试使用以下指南获取自己的UserBundle来处理sf 2.6.3:Symfony Book

我已将该示例代码粘贴到用户实体中的setPassword方法中(不知道这是否意味着如何使用),将其更改为适合(请参阅下面的代码)。

它出来了,我收到了一个错误的字段容器,没有在课程中找到[...]'和[...]'中找不到的方法encodePassword,但描述中缺少使用哪个Container ......

//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;
}

//...

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

提前致谢;)

1 个答案:

答案 0 :(得分:2)

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

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

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