我使用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
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 }
更新
堆栈追踪:
答案 0 :(得分:3)
确保为FOSUserBundle指定版本。存储库头与Symfony头对齐,而不是2.0.9。
[FOSUserBundle]
git=git://github.com/FriendsOfSymfony/FOSUserBundle.git
target=/bundles/FOS/UserBundle
version=1.0.0
答案 1 :(得分:1)
如果您要更新FOSUserBundle(或任何捆绑包),您需要确保模仿FOSUserBundle中对您覆盖的任何文件所做的更改。
在我的特定情况下,在RegistrationController中,FOSUserBundle在authenticateUser方法中将security.user_checker中的值更改为fos_user.user_checker,因此我在控制器中进行了相同的更改。
每次更新供应商时,都需要确保在捆绑中覆盖的文件(控制器,服务等)不依赖于已删除的服务类或方法。
答案 2 :(得分:0)
您注册服务吗? 或者您忘了为此服务添加路由?