Symfony2 FOSUserBundle: ha solicitado un servicio inexistente "security.user_checker"
-
29-10-2019 - |
Pregunta
Yo uso Symfony 2 y el FosuserBundle.Puedo iniciar sesión, cerrar sesión y ver el perfil.
Problema: Cuando voy a "/ Registro", complete el formulario y presione ENTER i Obtenga el siguiente error:
Usted ha solicitado un servicio inexistente "Security.User_Checker". 500 Error interno del servidor - ServiceNotFoundException
Parece que tengo que hacer con alguna configuración adicional, pero no puedo encontrar nada al respecto.
parte de config.yml:
fos_user:
db_driver: orm
firewall_name: fos_user
user_class: Blogger\BlogBundle\Entity\User
seguridad.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 }
actualización
STICK TRACE:
Solución
Asegúrese de especificar una versión para FOSUserBundle.La cabecera del repositorio está alineada con la cabecera de Symfony, no con la 2.0.9.
[FOSUserBundle]
git=git://github.com/FriendsOfSymfony/FOSUserBundle.git
target=/bundles/FOS/UserBundle
version=1.0.0
Otros consejos
Si está actualizando FOSUserBundle (o cualquier paquete para el caso), debe asegurarse de imitar los cambios realizados en FOSUserBundle en cualquier archivo que sobrescriba.
En mi caso particular, en el RegistrationController FOSUserBundle cambió un valor de security.user_checker a fos_user.user_checker en el método authenticateUser, así que hice el mismo cambio en mi controlador.
Cada vez que actualiza los proveedores, debe asegurarse de que los archivos (controladores, servicios, etc.) que está sobrescribiendo en su paquete no dependan de una clase de servicio o método que se haya eliminado.
¿Regístrese los servicios? ¿O tal vez olvidaste agregar un enrutamiento para este servicio?