Symfony6 et Symfony7 Techwall #57 Sécurité, Créer formulaire d'authentification, form authenticator
HTML-код
- Опубликовано: 5 окт 2024
- Symfony6 et Symfony 7Techwall #57 Sécurité, Créer un formulaire d'authentification via un form authenticator
github.com/aym...
Comme décrite dans la documentation, l’authentification dans Symfony ressemble à de « la magie ».
En effet, au lieu d’aller construire une route et un contrôleur afin d’effectuer le traitement, vous devez simplement activer un « authentication provider ».
« L’authentication provider » est du code qui s’exécute automatiquement avant chaque appel d’un contrôleur.
Symfony possède un ensemble d’ « authentication provider » prêt à l’emploi. Vous trouverez leur description dans la documentation : symfony.com/do...
Dans la documentation, il est conseillé de passer par les « Guard Authenticator » qui permettent un contrôle total sur toutes les parties de l’authentification.
Un « Guard authenticator » est une classe qui vous permet un control complet sur le processus d’authentification.
Cette classe devra ou implémenter l’interface AuthentiatorInterface ou étendre la classe abstraire associé au besoin (AbstractFormLoginAuthenticator en cas de formulaire d’authentification ou AbstractGuardAuthenticator en cas d’api)
La commande make:auth permet de générer automatiquement cette classe.
Une fois lancée, cette commande vous demande si vous voulez créer un « empty authenticator » ou un « login form authenticator ».
A partir de la version 5.3, vous devez implémenter uniquement les méthodes authenticate et la méthode onAuthenticationSuccess.
Il y a aussi des méthodes optionnelles que vous pouvez surcharger :
supports
onAuthenticationFailure
start
Symfony utilises à partir de la version 5,3 un nouveau Authenticator based Security
Pour la gestion des utilisateurs elle utilises Passport
Un site est généralement décomposé en deux parties :
Partie public : accessible à tous le monde
Partie privée : accessible à des utilisateurs particuliers.
Au sein même de la partie privée, certaines ressources sont spécifiques à des rôles ou des utilisateurs particuliers.
Nous identifions donc deux niveaux de sécurité :
L'authentification est le processus permettant d’authentifier un utilisateur.
Deux réponses possibles
Non authentifié : Anonyme.
Authentifié : membre
Le Bundle qui gère la sécurité dans Symfony s’appelle SecurityBundle.
Si vous ne l’avez pas dans votre application, installer le via la commande
composer require security
L’ensemble du système de sécurité est basé sur la classe User qui représente l’utilisateur de votre application.
Afin de créer la classe User, utiliser la commande :
symfony console make:user
Si vous n’avez pas le MakerBundle, installer le.
Cette outils vous posera un ensemble de questions, selon votre besoin répondez y et il fera tout le reste.
Remarque : pour l'email et le password c'est dans la prochaine vidéo (pour ceux qui cherche dans la vidéo)
Thanks mdrr, j'étais là en mode (Il se passe quoi, j'ai loupé une étape)
Merci.
avec plaisir :)
Hello, merci pour ce tuto qui est très complet. J'ai une question au sujet des formulaire de login et registration. Peut-on définir une template twig intégrant les deux formulaires afin d'utiliser un code CSS permettant de switcher de l'un à l'autre sur une même page ? Merci
Bonjour. Oui il faut que la route principale redirige vers la twig qui affiche les deux form et que pour chaque form il y ai une route spécifique pour le traiter
@@TechWall Merci pour cette piste. Vidéos géniale !
@@yannickeccli5665 Avec grand plaisir :)
Le cours #57 doit être vu avant celui-ci: #56. Erreur dans la numérotation des cours, je présume ...
Bon cours néanmoins !
Effectivement, vous avez raison, c'est corrigé.
Salut tech wall, Merci pour le tuto; est-ce possible de s'authentifier soit avec le username et/ou le mail en meme temps? (username ou email) donc si l'utilisateur tape son username et le mot de passe ou l'email et le mot de passe pour se connecter?
Bonjour ! Merci pour cette nouvelle vidéo. Je me pose une question : Sur toutes mes applications l'utilisateur doit exister dans la table user mais l'identification en elle-même se passe au niveau d'un annuaire LDAP (qui lui stocke le mot de passe ). Comment pensez-vous que je devrais procéder ? Normalement je ferais un formulaire, une vérification si l'utilisateur existe dans la table user puis si oui, vérification du mot de passe sur ldap et enfin, redirection. Mais en symfony ?
Bonjour. N'ayant pas travailer sur ce cas d'utilisation, je ne peux pas donner de réponse précise. Par contre il y a la documentation officielle qui traite ce cas : symfony.com/doc/current/security/ldap.html