这是我正在做的事情,我已经使用 FOS 用户包定义了自定义用户类型,也使用了奏鸣曲管理包,我已经成功地为管理员创建了服务config.yml
,还在我的自定义包中生成了 fos 用户实体
sonata.admin.hrmanagement:
class: Namespace\Mybundlename\Admin\MyAdminClass
tags:
- { name: sonata.admin, manager_type: orm, group: "Content", label: "My user type" }
arguments: [null, Namespace\Mybundlename\Entity\FosUser, ~]
calls:
- [ setTranslationDomain, [NamespaceMybundlenameBundle]]
我已经在 app 文件夹下的 main congig.yml 中导入了上面的 yml,在创建用户时,我希望我的安全编码器对接收到的纯密码(创建/编辑用户)进行哈希处理,成功地在 main security.yml 中定义了安全编码器,例如
security:
encoders:
Namespace\Mybundlename\Entity\FosUser: sha512
现在MyAdminClass
我有更新前和更新后的过滤器,我如何访问上面定义的我的实体的安全编码器
public function preUpdate($object)
{
$salt = md5(time());
$encoderservice = $this->get('security.encoder_factory');// here is the problem i can't access
$encoder = $encoderservice->getEncoder($object);
$encoded_pass = $encoder->encodePassword($object->getPassword(),$salt );
$object->setSalt($salt);
}