Symfony2 FosuserBundle - Vous avez demandé un service inexistant "Security.user_checker"
-
29-10-2019 - |
Question
J'utilise Symfony 2 et le FosuserBundle. Je peux me connecter, déconnecter et afficher le profil.
Problème: Lorsque je vais à "/ enregistrer", remplissez le formulaire et appuyez sur Entrée, j'obtiens l'erreur suivante:
Vous avez demandé un service inexistant "Security.user_checker". 500 Erreur du serveur interne - ServiceNotFoundException
Il semble que je l'ai fait à une configuration supplémentaire, mais je ne trouve rien à ce sujet.
Partie de 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 }
METTRE À JOUR
Trace de la pile:
La solution
Assurez-vous de spécifier une version pour FosuserBundle. La tête du référentiel est alignée sur la tête de Symfony, et non 2.0.9.
[FOSUserBundle]
git=git://github.com/FriendsOfSymfony/FOSUserBundle.git
target=/bundles/FOS/UserBundle
version=1.0.0
Autres conseils
Si vous mettez à jour FosuserBundle (ou tout paquet d'ailleurs), vous devez vous assurer que vous imitez les modifications apportées dans le FosuserBundle sur tous les fichiers que vous écrasez.
Dans mon cas particulier, dans le contrôle d'enregistrement FosuserBundle a changé une valeur de Security.user_checker à fos_user.user_checker dans la méthode AuthenticateUser, j'ai donc apporté le même changement dans mon contrôleur.
Chaque fois que vous faites une mise à jour des fournisseurs, vous devez vous assurer que les fichiers (contrôleurs, services, etc.), vous écrasez dans votre bundle ne dépend pas d'une classe de service ou d'une méthode qui a été supprimée.
Enregistrez-vous les services non? Ou peut-être que vous avez oublié Ajouter un routage pour ce service?