【问题标题】:Two differents FOSUser in application应用程序中的两个不同的 FOSUser
【发布时间】:2012-06-14 04:44:26
【问题描述】:

我在使用 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不是配置变量,是直接写成字符串的。

谢谢。

【问题讨论】:

  • 我认为你做错了。如果 userpro 比普通用户有任何额外的功能,那么你可以使用角色。
  • 我的 UserPro 有更多的属性,比如他的工作。如果我有两个不同的实体,我该怎么办。我在 user_class 中设置什么?
  • 您可以查看this 捆绑包。虽然没有尝试过自己:)

标签: symfony fosuserbundle


【解决方案1】:

你应该看看这个(官方)页面here

您的问题可能取决于前面所述的角色。

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

php app/console fos:user:create testuser

或具有管理员权限的用户,如下所示:

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

我建议您阅读文档以获取有关角色的更多选项和详细信息。

问候

【讨论】:

    【解决方案2】:

    在您的情况下,您需要创建 4 个不同的实体,用户注册、用户注册、用户和组。有关更多详细信息,您需要查看 symfony2 安全性。

    Click the Link

    在 user-registration,user-proregistration 中,您需要一个额外的字段 user_id 来将这 2 个实体与用户相关联。

    【讨论】:

      【解决方案3】:

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

      fos_user 是 FOSUser 捆绑包中的硬编码密钥,基于它们加载的设置。您不能只是发明自己的配置并期望它能够工作。认为它等同于config.yml 中的doctrinetwigswiftmailer

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

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

      【讨论】:

        猜你喜欢
        • 2016-10-07
        • 1970-01-01
        • 2011-12-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-04-24
        • 1970-01-01
        • 2019-11-18
        相关资源
        最近更新 更多