Aller au contenu principal

Avec la commande make:security:form-login

Maintenant que nous disposons d'utilisateurs dans notre base de données, il faut pouvoir les authentifier avec un formulaire de login.

Tout comme nous avons exécuté la commande make:user, on va pouvoir exécuter une autre commande make:security:form-login. Cette commande nous créera et configurera automatiquement un formulaire d'authentification accessible à l'URL /login.

Les pare-feux (firewalls)​

Quand on exécute cette commande, le Maker va automatiquement inscrire notre authentification derrière un pare-feu nommé main. Pour mettre en oeuvre notre authentification, il utilise le paramètre form_login :

config/packages/security.yaml
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
main:
lazy: true
provider: app_user_provider
form_login:
login_path: app_login
check_path: app_login
enable_csrf: true
logout:
path: app_logout
# where to redirect after logout
# target: app_any_route

Le paramètre form_login permet d'activer le FormLoginAuthenticator inclus dans le composant de sécurité de Symfony. Contrairement à l'ancienne méthode avec make:auth, nous n'avons plus besoin de définir notre propre Authenticator.

Les pare-feux, ou firewalls, comme main par exemple, permettent tout simplement de filtrer les requêtes entrantes.

"dev"

Le pare-feu dev est uniquement là pour autoriser l'affichage du profiler et de la Web Debug Toolbar, que nous voyons en bas de notre écran lors de nos développements, avec diverses informations sur la requête/page courante

On retrouve donc dans notre firewall main : le provider à utiliser pour les utilisateurs, et la configuration pour le formulaire de login. On pourrait utiliser bien d'autres paramètres de configuration avec form_login, pour les consulter il suffit d'exécuter la commande :

php bin/console debug:config security
Et lazy ?

la directive lazy permet de n'utiliser la session PHP, pour charger l'utilisateur, que si on en a effectivement besoin. Cela peut être utile si on a besoin de vérifier les rôles de l'utilisateur, par exemple. Mais ce n'est pas toujours le cas.

Une fois cette configuration en place, nous pouvons nous authentifier en accédant à la page /login.

Mais il faut également définir un contrôle d'accès pour contrôler qui a accès à quelle page !