我将Symfony 3.4与FOSUserBundle和EasyAdminBundle一起使用。
我在以下问题上停留了一段时间:当我通过 EasyAdmin 创建一个新用户时,输入的密码没有经过哈希处理,它在数据库和创建用户的编辑表单中保持清晰(在 EasyAdmin 中),而当我通过FOSUserBundle(注册)生成的表单创建用户时没有问题。
我的用户实体:
<?php
// src/Repas/UserBundle/Entity/User.php
namespace Repas\UserBundle\Entity;
use FOS\UserBundle\Model\User as BaseUser;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity
* @ORM\Table(name="fos_user")
*/
class User extends BaseUser
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
}
我的AdminController.php文件:
<?php
namespace Repas\MenusBundle\Controller;
use EasyCorp\Bundle\EasyAdminBundle\Controller\AdminController as BaseAdminController;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use Symfony\Component\Form\Extension\Core\Type\PasswordType;
class AdminController extends BaseAdminController
{
public function createNewUserEntity()
{
return $this->get('fos_user.user_manager')->createUser();
}
public function persistUserEntity($user)
{
$this->get('fos_user.user_manager')->updateUser($user, false);
parent::persistEntity($user);
}
public function updateUserEntity($user)
{
$this->get('fos_user.user_manager')->updateUser($user, false);
parent::updateEntity($user);
}
}
在我的config.yml文件中:
easy_admin:
entities:
User:
class: Repas\UserBundle\Entity\User
export_path: '%kernel.root_dir/../var/export/user'
password_encoding: { algorithm: 'bcrypt', cost: 12 }
在我的security.yml文件中:
encoders:
Repas\UserBundle\Entity\User: bcrypt
在我的routing.yml文件中:
fos_user:
resource: "@FOSUserBundle/Resources/config/routing/all.xml"
easy_admin_bundle:
resource: "@RepasMenusBundle/Controller/AdminController.php"
type: annotation
prefix: /admin
我经历了许多论坛以及官方文档,我认为我正确地遵循了所有内容,但我确实错过了一些东西。
谢谢您的帮助。