2012-12-19 36 views
0

我剛剛實現了自己的身份驗證提供程序,執行Facebook身份驗證。它的工作原理恰好一個請求,然後它有云:symfony2中缺少用戶提供商

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文件可用

第一個問題:爲什麼他現在 「看到」 了嗎? 第二個問題:每次他實現身份驗證提供程序時,是否必須創建相關的用戶提供程序?

謝謝

回答

0

我想你的用戶提供程序refreshUser方法有問題。當您使用會話持久性(標記被序列化並存儲在會話中)時使用此方法,因此可以從數據庫(或其他地方)的下一個請求中獲取用戶。

  1. 查閱供應商,因爲你把它註冊爲在security.yml
  2. UserProvider服務和使用服務ID是負責提取從數據庫或其他層(Web服務或東西)和AuthenticationProvider的用戶進行身份驗證(做認證邏輯用戶)並且它可以使用提供者,但是大多數情況下我們沒有必要使用Symfony\Component\Security\Core\User\UserProviderInterface而不是具體實現。所以不是強制性的