FOSUserBundle 未配置编码器:创建新用户
Posted
技术标签:
【中文标题】FOSUserBundle 未配置编码器:创建新用户【英文标题】:FOSUserBundle no encoder has been configured : creating a new user 【发布时间】:2012-03-26 21:35:42 【问题描述】:我想在 FOSUserBundle (Symfony2) 中创建一个新用户,但我总是收到相同的消息(我正在使用 php app/console fos:user:create
):
没有为帐户“MyProject\UserBundle\Entity\User”配置编码器。
导入的顺序正确
public function registerBundles()
$bundles = array(
//...
new MyProject\UserBundle\MyProjectUserBundle(),
new FOS\UserBundle\FOSUserBundle(),
);
安全文件:
security:
encoders:
Symfony\Component\Security\Core\User\User: plaintext
role_hierarchy:
ROLE_ADMIN: ROLE_USER
ROLE_SUPER_ADMIN: [ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]
但我总是遇到同样的错误...你知道如何解决这个问题吗? solution here 不适合我
谢谢
【问题讨论】:
【参考方案1】:您在编码器配置中缺少自己的用户类,例如:
security:
encoders:
Symfony\Component\Security\Core\User\User: plaintext
MyProject\UserBundle\Entity\User: sha512
或者,您可以像这样在 FOSUserBundle 界面上匹配它:
security:
encoders:
Symfony\Component\Security\Core\User\User: plaintext
FOS\UserBundle\Model\UserInterface: sha512
【讨论】:
谢谢!它有效,我还必须使用php -c
然后使用date.timezone
的usr > private > php.ini 的路径,最后创建用户。谢谢塞尔达克!【参考方案2】:
对于 Symfony 2.7+,你应该使用这个配置:
security:
encoders:
FOS\UserBundle\Model\UserInterface: bcrypt
但是!你还应该有 PHP 5.5 和 Apache 2.4 或 nginx。
【讨论】:
【参考方案3】:编辑 app/config 中的 security.yml
security:
encoders:
AppBundle\Entity\User: bcrypt
providers:
fos_userbundle:
id: fos_user.user_provider.username
在 main 下也添加“logout:~”
对于 Symfony 4.x,请参阅 https://youtu.be/QgYQWGwY9tM
【讨论】:
以上是关于FOSUserBundle 未配置编码器:创建新用户的主要内容,如果未能解决你的问题,请参考以下文章
Symfony2 在未登录时将 /admin/* 重定向到 /admin/login(或使用 FOSUserBundle?)
FOSUserBundle - 您必须在安全防火墙配置中激活注销