Symfony2:如何使用非默认的实体管理器对用户进行身份验证?

时间:2013-06-13 16:24:56

标签: symfony entitymanager

我需要在用户登录时使用第二个数据库进行身份验证,该数据库的连接不是默认连接。我已阅读很多关于创建用户提供程序的帖子,这些用户提供程序扩展了UserProviderInterface但没有一个工作。

我现在做了什么:

  1. 我有一个自定义用户类(MyCustomUser),它扩展了FOSUser类。
  2. 我在config.yml文件中定义了两个连接和两个实体管理器。
  3. 我在security.yml中定义了自定义用户类的提供程序:

    提供商:

      chain_provider:
          chain:
              providers: [in_memory, fos_userbundle, myusers]
      ...
    
      myusers:
          entity: { class: myproject\myBundle\Entity\MyCustomUser}
    
  4. 问题在于,当我尝试使用MyCustomUser实例的凭据(用户名/密码)登录时,Symfony会尝试针对默认连接验证此数据,其中MyCustomUser表不存在。换句话说,它正在尝试从默认连接加载数据,并且出现“table default_connection.MyCustomUser不存在”之类的错误。

    我应该遵循哪些步骤来加载我想要的实体管理器?

    提前致谢!

1 个答案:

答案 0 :(得分:0)

您需要将非默认实体管理器注入实现UserProviderInterface的自定义用户提供程序。

然后在loadUserByUsername($username)方法中使用它。