Qu’est-ce que Fortify
Laravel Fortify est une implémentation de backend d’authentification indépendante du frontend. Il fournit toutes les routes et contrôleurs nécessaires pour la connexion, l’inscription, la réinitialisation du mot de passe, la vérification e-mail, le 2FA et les passkeys.Fortify n’a pas d’interface utilisateur. Il fonctionne lorsque le starter kit ou votre propre interface envoie des requêtes aux routes de Fortify.
Historique : de Jetstream aux starter kits actuels
Pourquoi Fortify est utilisé dans les starter kits actuels
Les starter kits React/Vue initiaux étaient implémentés sans Fortify. Mais lorsque la prise en charge de l’authentification à deux facteurs (2FA) est devenue nécessaire, Fortify a été adopté tel quel, ce qui a fait basculer toute l’authentification sur une base Fortify. Comme Fortify est conçu pour être « indépendant du frontend », il s’accorde bien avec les starter kits basés sur Inertia, et il est toujours utilisé aujourd’hui.Fortify est actuellement le package d’authentification officiel Laravel utilisé sur la plus longue durée. Depuis son apparition en 2020, il reste en service au fil de ses avatars : Jetstream → starter kits actuels.
Structure des starter kits actuels
Dans les starter kits React/Vue, Fortify est configuré via ces fichiers.app/Providers/FortifyServiceProvider.php— enregistrement des vues, actions et rate limitsconfig/fortify.php— fonctionnalités activées et paramètres d’authentification
Principaux paramètres de config/fortify.php
Features::passkeys()) ne sont pas activées par défaut. Pour les activer, ajoutez-les au tableau features.
Configuration de FortifyServiceProvider
Le FortifyServiceProvider du starter kit remplit trois rôles.
1. Configuration des actions
app/Actions/Fortify/. La validation et le hachage sont regroupés ici.
2. Configuration des vues
Features::enabled() pour vérifier les feature flags et les passer à la vue.
Dans une application Blade, retournez
view('auth.login') au lieu de Inertia::render(...). Même en changeant de frontend, seul FortifyServiceProvider doit être modifié ; la logique d’authentification ne change pas.3. Configuration du rate limiting
- Limiteur
login: limite par combinaison e-mail + adresse IP (protection contre le brute-force) - Limiteur
two-factor: limite par ID de tentative de connexion en session
RateLimiter::for() des clés qui correspondent à celles de la clé limiters de config/fortify.php.
Principales fonctionnalités et routes enregistrées
Voici les principales routes enregistrées par Fortify, classées par fonctionnalité.| Fonctionnalité | Méthode | Route |
|---|---|---|
| Connexion | GET | /login |
| Connexion | POST | /login |
| Déconnexion | POST | /logout |
| Inscription | GET | /register |
| Inscription | POST | /register |
| Demande de réinitialisation | GET / POST | /forgot-password |
| Réinitialisation | GET / POST | /reset-password |
| Vérification e-mail | GET | /email/verify |
| Renvoi du lien de vérification | POST | /email/verification-notification |
| Confirmation du mot de passe | GET / POST | /user/confirm-password |
| Activation du 2FA | POST | /user/two-factor-authentication |
| Challenge 2FA | GET / POST | /two-factor-challenge |
| Connexion par passkey | GET / POST | /passkeys/login |
| Gestion des passkeys | GET / POST / DELETE | /user/passkeys |
php artisan route:list --name=fortify ou simplement php artisan route:list.
Authentification à deux facteurs (2FA)
Dans les starter kits,Features::twoFactorAuthentication() est activée. confirm et confirmPassword sont tous deux à true.
| Option | Signification |
|---|---|
confirm | Exige une confirmation par code d’authentification après activation |
confirmPassword | Exige une confirmation du mot de passe avant de modifier la configuration 2FA |
Activer le 2FA
Envoyez une requête POST à
/user/two-factor-authentication. En cas de succès, le statut two-factor-authentication-enabled est mis en session.Consulter le QR code
Envoyez une requête GET à
/user/two-factor-qr-code. Le SVG du QR code à scanner par l’application d’authentification est retourné.Confirmer avec un code d'authentification
Envoyez une requête POST avec le code à
/user/confirmed-two-factor-authentication pour finaliser la configuration.Passkeys
Les passkeys sont une fonctionnalité récemment ajoutée à Fortify. C’est une authentification sans mot de passe utilisant WebAuthn, compatible avec Face ID, Touch ID, Windows Hello et les clés de sécurité matérielles.Activation
Ajoutez au tableaufeatures de config/fortify.php.
PasskeyUser et le trait PasskeyAuthenticatable au modèle User.
passkeys de config/fortify.php.
Les passkeys de Fortify s’appuient en interne sur le package Composer
laravel/passkeys. Il n’est pas nécessaire de publier le fichier de configuration de laravel/passkeys ; la clé passkeys de config/fortify.php est prioritaire.@laravel/passkeys, helpers React/Vue/Svelte, etc.), consultez aussi Introduction aux passkeys.
Pages associées
Guard d'authentification personnalisé
Découvrez comment créer un guard d’authentification personnalisé en implémentant les interfaces Guard et StatefulGuard.
Documentation officielle : Laravel Fortify
Consultez la documentation officielle pour l’installation, l’ensemble des fonctionnalités et la personnalisation.