2012-01-16 85 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,所以我在控制器中做了相同的更改。

每次您对供应商进行更新时,都需要确保在包中覆盖的文件(控制器,服务等)不取决于已被删除的服务类或方法。

相关问题