应用程序中有两个不同的FOSUser

时间:2012-06-11 09:23:08

标签: symfony fosuserbundle

我遇到了FOSUserBundle的问题。

在我的Symfony2应用程序中,我想实现两个不同的用户。 对于基本用户,我有一个实体User,有一个具有更多信息的实体UserPro。

我的问题是我想用这两个实体配置我的包:

fos_user:
    db_driver:     orm
    firewall_name: main
    user_class:    Btp\UserBundle\Entity\User

fos_userpro:
    db_driver:     orm
    firewall_name: pro
    user_class:    Btp\UserProBundle\Entity\UserPro

所以,在我的security.yml中使用fos_user和fos_userpro作为提供者。

我不确定这是可能的。我收到一个错误:

  

没有扩展程序可以加载“fos_userpro”的配置(在/.... / app / config / config.yml中)。寻找名称空间“fos_userpro”,找到“框架”,“安全”,......

当我查看FOSUserBundle文件时,我觉得fos_user不是配置变量,而是直接用字符串编写。

感谢。

3 个答案:

答案 0 :(得分:0)

您应该查看此(官方)页面here

您的问题可能取决于之前所说的rôles。

例如,你可以像这样创建一个普通用户:

php app/console fos:user:create testuser

或具有以下管理员权限的用户:

php app/console fos:user:create adminuser --super-admin

我建议你去阅读文档,了解有关角色的更多选项和详细信息。

此致

答案 1 :(得分:0)

在您的情况下,您需要进行4种不同的实体,用户注册,用户预注册,用户和组。有关详细信息,您需要查看symfony2安全性。

Click the Link

在用户注册,用户预注册中,您需要一个额外的字段user_id,用于将这两个实体与用户相关联。

答案 2 :(得分:0)

您正在尝试重新定义FOSUser设置。而不是那样,你需要创建单独的防火墙和提供程序(如果你愿意,可能需要编码器)。 check this SO answer

fos_user是FOSUser包中的受密码密钥,具体取决于它们的加载设置。你不能只是发明自己的配置,并期望它的工作。将其视为等同于doctrine

中的twigswiftmailerconfig.yml

此外fos_user.firewall_name仅在注册监听器中的FOSBundle中用于自动登录并在注册后重定向用户(如果已启用)。

fos_user.user_class用于创建和验证表单,在注册期间创建新用户(您可以使用挂钩在此处添加功能)以及简单的配置文件管理,这是FOSUser的一部分。从理论上讲,应该可以在您的案例中使用某种抽象用户实体类,或者只使用User实体并声明Entity\UserPro扩展Entity\User