2

我使用 Symfony 2 和 FOSUserBundle。我可以登录、注销和查看个人资料。

问题:当我转到“/register”时,填写表格并按回车,我收到以下错误:

您请求了一个不存在的服务“security.user_checker”。500 内部服务器错误 - ServiceNotFoundException

似乎我需要做一些额外的配置,但我找不到任何关于它的东西。

config.yml 的一部分:

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

安全性.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 }

更新

堆栈跟踪:

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

4

3 回答 3

3

确保为 FOSUserBundle 指定版本。存储库头与 Symfony 头对齐,而不是 2.0.9。

[FOSUserBundle]
    git=git://github.com/FriendsOfSymfony/FOSUserBundle.git
    target=/bundles/FOS/UserBundle
    version=1.0.0
于 2012-01-16T22:26:41.043 回答
1

如果您要更新 FOSUserBundle(或与此相关的任何捆绑包),您需要确保模仿 FOSUserBundle 中对您覆盖的任何文件所做的更改。

在我的特殊情况下,在 RegistrationController FOSUserBundle 中,在 authenticateUser 方法中将值从 security.user_checker 更改为 fos_user.user_checker,因此我在控制器中进行了相同的更改。

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

于 2012-05-03T22:34:07.873 回答
0

您注册服务正确吗?或者您忘记为该服务添加路由?

于 2012-01-16T21:18:37.633 回答