繁体   English   中英

Symfony 3-FOSUserBundle SonataAdminBundle哈希问题

[英]Symfony 3 - FOSUserBundle SonataAdminBundle hash problems

各位晚上好

在管理页面的开发过程中,我发现同时使用捆绑软件和FOSUserBundle SonataAdminBunlde的用户存在密码哈希问题。

好,首先向您展示我的用户类别

<?php

namespace AF\UserBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use FOS\UserBundle\Model\User as BaseUser;

/**
* Etudiant
*
* @ORM\Table(name="etudiant")
* @ORM\Entity(repositoryClass="AF\UserBundle\Repository\EtudiantRepository")
*/
class Etudiant extends BaseUser
{
/**
 * @var int
 *
 * @ORM\Column(name="id", type="integer")
 * @ORM\Id
 * @ORM\GeneratedValue(strategy="AUTO")
 */
protected $id;

/**
* @ORM\Column(name="nom", type="text")
*/
private $nom;

/**
* @ORM\Column(name="prenom", type="text")
*/
private $prenom;

/**
* @ORM\Column(name="cin", type="integer")
*/
private $cin;

/**
* @ORM\Column(name="num_inscri", type="text")
*/
private $numInscri;

/**
* @ORM\Column(name="date_naissance", type="date")
*/
private $dateNaissance;

/**
* @ORM\Column(name="num_tel", type="integer")
*/
private $numTel;

/**
* @ORM\Column(name="adresse", type="text")
*/
private $adresse;

/**
* @ORM\ManyToOne(targetEntity="AF\EnsiBundle\Entity\Classes")
* @ORM\JoinColumn(nullable=false)
*/
private $classes;
}

如您所见,我基于FOS用户捆绑包创建了Student类

这是文件security.yml

security:
  encoders:
    AF\UserBundle\Entity\Etudiant: sha512

现在,我已经使用SonataAdminBundle提供的模板创建了一个管理页面。

这是EtudiantAdmin类的一部分

<?php

namespace AF\UserBundle\Admin;

use Sonata\AdminBundle\Admin\AbstractAdmin;
use Sonata\AdminBundle\Datagrid\ListMapper;
use Sonata\AdminBundle\Datagrid\DatagridMapper;
use Sonata\AdminBundle\Form\FormMapper;
use Sonata\AdminBundle\Show\ShowMapper;

  class EtudiantAdmin extends AbstractAdmin
  {
   protected function configureFormFields(FormMapper $formMapper)
    {
    $formMapper
    ->with('Ajouter Etudiant')
    ->add('nom', 'text')
    ->add('prenom', 'text')
    ->add('username', 'text')
    ->add('dateNaissance', 'birthday')
    ->add('email','email')
    ->add('password', 'text')
    ->add('cin', 'text')
    ->add('numInscri', 'text')
    ->add('classes', 'sonata_type_model', array(
        'class' => 'AF\EnsiBundle\Entity\Classes',
        'property' => 'nom',
    ))
    ->add('numTel', 'text')
    ->add('adresse', 'text')
    ->add('roles', 'collection')
    ->end()
    ->end();
}
}

函数configureFormFields在管理页面中创建一个表单,我可以在其中添加一个学生。

现在是管理员服务

services:
admin.etudiant:
    class: AF\UserBundle\Admin\EtudiantAdmin
    arguments: [~, AF\UserBundle\Entity\Etudiant, ~]
    tags:
        - { name: sonata.admin, manager_type: orm, label: Etudiant, group: "Gestionnaire Etudiants"}

当我添加一个学生时,一切正常,并且该学生被添加到数据库中,除非我发现输入的密码没有哈希

我知道我需要在控制器中编写一些指令,但是我不知道该怎么办。

有人帮我

只需将@fos_user.user_manager服务注入EtudiantAdmin服务/类,并实现prePersist()/preUpdate()方法以更新规范*和密码(哈希)字段:

public function prePersist($user)
{
    $this->userManager->updateUser($user, false);
}

public function preUpdate($user)
{
    $this->userManager->updateUser($user, false);
}

重要! 在表格中使用$formMapper->add('plainPassword', 'text')代替password

我仅用plainpassword替换了密码,并且可以使用,我不知道这是否是预期的结果

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM