我无法为我的pwd设置编码,只有模式'plaintext'才有效。我使用FOSUser包:
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 :(得分:0)
在security.yml
中,将FOSUserBundle的加密设置为覆盖的Acteur
实体:
security:
encoders:
FOS\UserBundle\Model\UserInterface: bcrypt
因此,您只需在Acteur
实体中声明所需的额外属性。 username
,email
,password
等常见属性已在FOSUserBundle\Model\User
中声明。
创建新用户时。
plainPassword
(不加密)name
,email
等其他任何财产。然后致电FOSUserBundle
UserManager
服务完成其余工作:
$user; // fill up any value like name etc with plainPassword.
$userManager = $this->get('fos_user.user_manager');
$userManager->updateUser($user);
加密将自动处理。
注意:如果您从任何注册password
左右接受FormType
,则可以将plainPassword
属性公开给表单。
希望这有帮助!
答案 1 :(得分: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