Security Symfony2 SonataAdminBundle密码字段加密

Security Symfony2 SonataAdminBundle密码字段加密,security,symfony,encryption,fosuserbundle,sonata-admin,Security,Symfony,Encryption,Fosuserbundle,Sonata Admin,我有FOSUserBundle来管理我的用户,还有SonataAdminBundle来管理我的网站。。。我有一个问题,每当我尝试更改/添加任何用户的密码时,密码都不会被编码到sha512,但当用户在fosuserbundle注册页面中注册时,密码会被编码到 因此,Symfony2配置和fosuserbundle配置都没有任何问题,它可能在SonataAdminBundle的某个地方,或者可能在我的管理类中 <?php // src/Acme/DemoBundle/Admin/PostAdm

我有FOSUserBundle来管理我的用户,还有SonataAdminBundle来管理我的网站。。。我有一个问题,每当我尝试更改/添加任何用户的密码时,密码都不会被编码到
sha512
,但当用户在fosuserbundle注册页面中注册时,密码会被编码到

因此,Symfony2配置和fosuserbundle配置都没有任何问题,它可能在SonataAdminBundle的某个地方,或者可能在我的管理类中

<?php
// src/Acme/DemoBundle/Admin/PostAdmin.php

namespace Web\DificilBundle\Admin;

use Sonata\AdminBundle\Admin\Admin;
use Sonata\AdminBundle\Datagrid\ListMapper;
use Sonata\AdminBundle\Datagrid\DatagridMapper;
use Sonata\AdminBundle\Form\FormMapper;
use Web;

class UserAdmin extends Admin
{
    // Fields to be shown on create/edit forms
    protected function configureFormFields(FormMapper $formMapper)
    {
        $formMapper
            ->add('firstname')
            ->add('lastname')
            ->add('username')
            ->add('email')
            ->add('password', 'password') // -> I WANT THIS TO BE ENCODED INTO SHA512!
             ->add('roles','choice',array('choices'=>$this->getConfigurationPool()->getContainer()->getParameter('security.role_hierarchy.roles'),'multiple'=>true ));

            //->add('body')
        ;
    }

    // Fields to be shown on filter forms
    protected function configureDatagridFilters(DatagridMapper $datagridMapper)
    {
        $datagridMapper
            ->add('firstname')
            ->add('lastname')
            ->add('username')
            ->add('email')
            ->add('password')
        ;
    }

    // Fields to be shown on lists
    protected function configureListFields(ListMapper $listMapper)
    {
        $listMapper
            ->add('firstname')
            ->add('lastname')
            ->add('username')
            ->add('password')
            ->add('email')
            ->add('facebookid')
            ->add('roles');

            //->add('password', 'password')
        ;
    }
}

为所有与我有相同问题的人找到了解决方案,就在您的管理类上,您可以在其中定义您的创建/更新表单,使用此表单,您的密码将被完全加密并准备好登录到新用户;)


相同的(inc解决方案如下)适用于Symfony3I。我已使用此代码。它在添加新用户的情况下工作,但当我更新用户的密码时,该新密码不会在用户的数据表中更新。所以请帮助我,我错在哪里。
protected function configureFormFields(FormMapper $formMapper)
{
    $formMapper
        ->add('email', 'email', array('label' => 'form.email', 'translation_domain' => 'FOSUserBundle'))
        ->add('username', null, array('label' => 'form.username', 'translation_domain' => 'FOSUserBundle'))
        ->add('plainPassword', 'repeated', array(
                'type' => 'password',
                'options' => array('translation_domain' => 'FOSUserBundle'),
                'first_options' => array('label' => 'form.password'),
                'second_options' => array('label' => 'form.password_confirmation'),
                'invalid_message' => 'fos_user.password.mismatch',
        ))
    ;
}