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());
}
我正在尝试使用以下指南让自己的 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());
}