【问题标题】:Symfony2 dyn. password encodingSymfony2 动态。密码编码
【发布时间】:2015-01-27 08:25:10
【问题描述】:

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

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

结果显示,我收到错误“在类 [...] 中找不到字段容器”和“在类 [...] 中找不到方法 encodePassword”,但描述缺少要使用的容器。 ..

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

//...

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

提前致谢;)

【问题讨论】:

    标签: php symfony-2.6


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2014-07-24
      • 2013-09-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多