Profitant de quelques jours de calme bien mérités, on en profite pour continuer de se familiariser avec Symfony3. Bon autant être clair, la vérité c’est que pour l’instant les vraies nouveautés ne se bousculent pas au portillon, mais, il en existe au moins une qui mérite vraiment d’être étudiée : Symfony Guard.Symfony Guard est le nouveau système d’authentification apparu dans la version 2.8 de Symfony, il a pour vocation de simplifier la mise en place d’une stratégie d’authentification. En effet, alors que jusqu’à maintenant il fallait implémenter des milliers (on exagère à peine) d’interfaces et factory différentes, il n’est désormais nécessaire d’implémenter qu’une interface : Le « AbstractGuardAuthenticator« .

Cette interface ne contient que 7 méthode à implémenter:

  • getCredentials: Permettant d’extraire les identifiants de la requête (on peut imaginer un login/password soumis via un formulaire, une clé d’API passée en paramètre GET, etc.)
  • getUser: Permet de récupérer un utilisateur en fonction de ses identifiants (pouvant se trouver dans une BDD, un fichier, etc…)
  • checkCredentials: Permet de vérifier les identifiants
  • createAuthenticationToken: Permet de créer le token d’authentification
  • onAuthenticationFailure: Retourne un objet Response dans le cas où l’authentification échoue
  • onAuthenticationSuccess: Retourne un objet Response dans le cas où l’authentification réussit
  • supportsRememberMe: Permet de spécifier si la stratégie d’authentification supporte la fonctionnalité « Se souvenir de moi »

Ensuite il suffit simplement d’enregistrer cette classe en tant que service afin de pouvoir l’utiliser dans le security.yml et le tour est joué !

Pour plus de détail, vous trouverez ci-dessous un tutoriel expliquant comment implémenter un mécanisme d’authentification avec Symfony Guard: https://symfony.com/doc/current/cookbook/security/guard-authentication.html

Facile !