Je travaille sur un projet symfony 2.3 ayant le code de routage suivant
just2_frontend_logincheck:
pattern: /login_check
Il n'a pas
defaults:{ _controller: testBundle:User:login }
Mais ça marche. Mais je ne sais pas comment fonctionne le routage. C'est possible? Veuillez me conseiller sur le routage.
Le check_path route/chemin est utilisé par votre pare-feu pour intercepter les demandes de connexion.
L'action de cette route n'est jamais vraiment accessible. Il s'agit de l'itinéraire/URL vers lequel votre formulaire de connexion est publié et la demande doit être traitée par le service fournisseur de votre pare-feu.
Si l'action de la route check_path
Est en cours d'exécution, il y a un problème avec le pare-feu (la demande n'est pas traitée par votre pare-feu).
Comme vous pouvez le voir ici check_path de FOSUserBundle est routé vers SecurityController::checkAction
Et lance simplement un RuntimeException
.
La configuration de check_path se trouve dans app/config/security.yml
Sous security.firewalls.<firewallname>.form_login.check_path
.
Il peut s'agir d'un modèle comme /login_check
Ou, comme dans votre cas, d'un nom de route, c'est-à-dire just2_frontend_logincheck
, Mais il n'y a aucune action sous-jacente.
security:
providers:
your_provider_name: your_provider_service # authentication provider
# ...
firewalls: # Required
your_firewall_name:
# ...
provider: your_provider_name
form_login:
check_path: /login_check # submit the login form here
# in your case a route name:
# just2_frontend_logincheck
Sous le capot, symfony appelle la méthode authenticate()
du service your_provider_service
Pour vérifier les informations d'identification fournies.
Vous pouvez trouver la classe utilisée comme fournisseur de services en utilisant:
app/console debug:container --show-private your_provider_service