2012-01-16 38 views
2

我使用Symfony 2和FOSUserBundle。我可以登錄,註銷並查看配置文件。Symfony2 FOSUserBundle - 您已請求不存在的服務「security.user_checker」

問題:當我去「/註冊」,填寫表格,然後按回車我得到以下錯誤:

您已請求不存在的服務「security.user_checker」。 500內部服務器錯誤 - ServiceNotFoundException

似乎我已經做了一些額外的配置左右,但我找不到任何有關它。

config.yml的部分:

fos_user: 
    db_driver: orm 
    firewall_name: fos_user 
    user_class: Blogger\BlogBundle\Entity\User 

security.yml:

security: 
    encoders: 
     Symfony\Component\Security\Core\User\User: plaintext 
     FOS\UserBundle\Model\UserInterface: sha512 

    role_hierarchy: 
     ROLE_ADMIN:  ROLE_USER 
     ROLE_SUPER_ADMIN: [ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH] 

    providers: 
     in_memory: 
      users: 
       user: { password: userpass, roles: [ 'ROLE_USER' ] } 
       admin: { password: adminpass, roles: [ 'ROLE_ADMIN' ] } 
     fos_user: 
      id: fos_user.user_manager 

    firewalls: 
     dev: 
      pattern: ^/(_(profiler|wdt)|css|images|js)/ 
      security: false 

     fos_user: 
      pattern: ^/ 
      provider: fos_user 
      form_login: 
       check_path: /login_check 
       login_path: /login 
      logout: 
       path: /logout 
       target:/
      anonymous: ~ 

    access_control: 
     - { path: /secured/admin, roles: ROLE_ADMIN } 
     - { path: ^/login$, roles: IS_AUTHENTICATED_ANONYMOUSLY } 
     - { path: ^/register, roles: IS_AUTHENTICATED_ANONYMOUSLY } 

UPDATE

堆棧跟蹤:

http://i.stack.imgur.com/vsGwF.png

+0

是你的config.yml中的縮進嗎?它可能會造成麻煩。 – 2012-01-16 21:26:52

+0

我的原始文件中沒有縮進是正確的。我更新了這個問題。 – Dennis 2012-01-16 21:38:05

+0

您是否確定您使用的FOSUserBundle版本與您的Symfony版本兼容?它不止一次地咬我。 – 2012-01-16 21:55:06

回答

3

確保您爲FOSUserBundle指定了一個版本。倉庫頭與Symfony頭對齊,而不是2.0.9。

[FOSUserBundle] 
    git=git://github.com/FriendsOfSymfony/FOSUserBundle.git 
    target=/bundles/FOS/UserBundle 
    version=1.0.0 
+0

你說得對。這很好。謝謝! – Dennis 2012-01-16 22:32:35

+2

總是指定版本。更新時會爲您節省很多痛苦。在github中,你可以在標籤下找到可用的版本。 – 2012-01-16 22:40:26

0

您註冊服務是否正確? 或者您可能忘了爲此服務添加路由?

+0

我已經添加了以下路線到我的「應用程序/routing.yml「:[link](http://pastebin.com/RjwTdeut) – Dennis 2012-01-16 21:23:21

+0

你的意思是哪些服務?我已經在[AppKernel.php](http://pastebin.com/SYAZDM7P) – Dennis 2012-01-16 21:27:36

+0

中註冊了該軟件包您在哪個環境工作?你嘗試過celar緩存嗎? – Pawel 2012-01-16 21:28:43

1

如果要更新FOSUserBundle(或與此有關的任何包),你需要確保你模仿的FOSUserBundle做出您覆蓋任何文件的變化。

在我的特殊情況下,在RegistrationController中,FOSUserBundle將一個值從security.user_checker更改爲authenticateUser方法中的fos_user.user_checker,所以我在控制器中做了相同的更改。

每次您對供應商進行更新時,都需要確保在包中覆蓋的文件(控制器,服務等)不取決於已被刪除的服務類或方法。

相關問題