2016-09-28 4 views
-2

Я не могу установить кодировку для моего pwd, работает только «открытый текст» режима. Я использую FOSUser сверток:Symfony FOSUserBundle не может установить кодировщик

security.yml:

security: 
    encoders: 
     GestionBundle\Entity\Acteur: plaintext 

    providers: 
     main_provider: 
      id: fos_user.user_provider.username 

    firewalls: 
     [...] 

     main: 
      pattern: ^/   
      anonymous: false  
      provider: main_provider 
      form_login: 
       login_path:   fos_user_security_login 
       check_path:   fos_user_security_check  
       default_target_path: route_accueil    
      logout: 
       path: fos_user_security_logout  
       target: /login 

config.yml

fos_user: 
    db_driver:  orm     
    firewall_name: main    
    user_class: GestionBundle\Entity\Acteur 

Мои классы:

abstract class Acteur extends FOS\UserBundle\Model\User { ... } 

abstract class Utilisateur extends Acteur { ... } 

class Professionnel extends Utilisateur { ... } 
class Beneficiaire extends Utilisateur { ... } 

Можете ли вы помочь мне.

ответ

0

В security.yml, установить шифрование для FOSUserBundle вместо вашего перезаписан Acteur лица:

security: 
    encoders: 
     FOS\UserBundle\Model\UserInterface: bcrypt 

Таким образом, вы объявляете только дополнительные свойства, необходимые в вашем Acteur Entity. Общие свойства, такие как username, email, password уже объявлены в FOSUserBundle\Model\User.

При создании нового пользователя.

  • Set plainPassword (без шифрования)
  • Установка соли объекта пользователя (будет использоваться для шифрования)
  • Заполните любое дополнительное свойство, как name, email и т.д.

Затем вызовите FOSUserBundleUserManager обслуживание остальным:

$user; // fill up any value like name etc with plainPassword. 
$userManager = $this->get('fos_user.user_manager'); 
$userManager->updateUser($user); 

Шифрование будет выполняться автоматически.

Примечание: Если вы принимаете password из любого регистрационного счета FormType или около того, вы можете продать plainPassword собственности.

Надеюсь, это поможет!

0

Спасибо, но пароль не шифруется в базе данных:

$professionnel1 = new Professionnel(); 
[...] 
$professionnel1->setPassword("admin"); 
$userManager = $this->get('fos_user.user_manager'); 
$userManager->updateUser($professionnel1); 

security.yml:

security: 
    encoders: 
     FOS\UserBundle\Model\UserInterface: sha512 

 Смежные вопросы

  • Нет связанных вопросов^_^