symfony2中缺少用户提供程序

时间:2012-12-19 21:58:52

标签: symfony

我刚刚实施了自己的身份验证提供程序,执行facebook身份验证它只适用于一个请求,然后就是:

There is no user provider for user "Nourdine\BasicBundle\Security\User\FacebookUser"

事情是:

1 - FacebookProvider就在那里踢。 2 - 我将其注册为服务:

  <service id="facebook_user_provider" class="Nourdine\BasicBundle\Security\User\FacebookUserProvider" />

3 - 并在security.xml中提供

第一个问题:为什么他现在“看到”它? 第二个问题:每次实施身份验证提供程序时,是否必须创建相关的用户提供程序?

由于

1 个答案:

答案 0 :(得分:0)

我认为您的用户提供程序refreshUser方法有问题。当您使用会话持久性(令牌被序列化并存储在会话中)时,将使用此方法,以便可以从数据库(或其他位置)的下一个请求中获取用户。

  1. 它看到提供商导致您将其注册为服务并使用security.yml
  2. 中的服务ID
  3. UserProvider负责从db或其他层(webservice或其他)获取用户,AuthenticationProvider对用户进行身份验证(执行身份验证逻辑),它可以使用提供程序但是大部分时间我们都不需要使用Symfony\Component\Security\Core\User\UserProviderInterface实现。所以不是强制性的