LES
LES MIDDELWARE
MIDDELWARE
PLAN
PLAN
01
DEFINITION
DEFINITION
Dans Laravel, un middleware est un filtre qui intercepte
les requêtes HTTP entrant ou sortant de votre application.
Il permet d'exécuter une logique avant qu'une requête
atteigne le contrôleur ou après qu'une réponse ait été
générée.
Par exemple :
•Vérifier si un utilisateur est authentifié.
02
AVANTAGES
AVANTAGES
•Séparation des responsabilités : Les middlewares isolent
les fonctionnalités transversales (comme l’authentification,
la journalisation) du code métier.
•Réutilisation : Un même middleware peut être appliqué à
plusieurs routes.
•Facilité de maintenance : Les modifications dans les
fonctionnalités transversales sont centralisées dans un
middleware.
03
INCONVENIENT
INCONVENIENT
•Complexité accrue : Trop de middlewares peuvent compliquer
la compréhension du flux des requêtes.
•Impact sur la performance : Une mauvaise gestion ou un
excès de middlewares peut ralentir les requêtes HTTP.
04
BONNE
BONNEPRATIQUE
PRATIQUE
[Link] l'utilisation excessive : Évitez de surcharger vos
routes avec trop de middlewares.
[Link] : Placez vos middlewares dans des fichiers
séparés pour une meilleure lisibilité.
[Link] : Configurez vos middlewares globaux et locaux
en fonction des besoins.
[Link] : Documentez le rôle et l'usage de chaque
middleware pour faciliter la maintenance.
05
CAS
CASPRATIQUE
PRATIQUE
Middleware de connexion utilisateur
Étape 1 : Création d’un middleware
Utilisez la commande suivante pour créer un middleware appelé CheckLogin :
php artisan make:middleware CheckLogin
06
CAS
CASPRATIQUE
PRATIQUE
Middleware de connexion utilisateur
Étape 2 : Ajout de la logique
Dans le fichier app/Http/Middleware/[Link] :
07
CAS
CASPRATIQUE
PRATIQUE
Middleware de connexion utilisateur
namespace App\Http\Middleware;
use Closure;
use Illuminate\Support\Facades\Auth;
class CheckLogin
{
public function handle($request, Closure $next)
{
if (!Auth::check()) {
// Redirigez l'utilisateur s'il n'est pas connecté
return redirect('/login')->with('error', 'Vous devez être connecté.');
}
return $next($request); // Continuez la requête
} 08
}
CAS
CASPRATIQUE
PRATIQUE
Middleware de connexion utilisateur
Étape 3 : Enregistrement du middleware
Dans le fichier app/Http/[Link], enregistrez
le middleware :
protected $routeMiddleware = [
'[Link]' => \App\Http\Middleware\CheckLogin::class,
];
09
CAS
CASPRATIQUE
PRATIQUE
Middleware de connexion utilisateur
Étape 4 : Application du middleware
Appliquez le middleware à une route spécifique dans le fichier
routes/[Link] :
Route::get('/dashboard', [DashboardController::class, 'index'])->middleware('[Link]');
10
CAS
CASPRATIQUE
PRATIQUE
Middleware de connexion utilisateur
1. namespace App\Http\Middleware;
•Le mot-clé namespace définit l'espace de noms où se trouve cette classe.
Cela permet d’organiser les classes et de les éviter d’entrer
en conflit avec d’autres classes portant le même nom.
Ici, la classe CheckLogin appartient au namespace App\Http\Middleware,
qui regroupe les middlewares de votre application Laravel.
2. use Closure;
•use Closure importe la classe Closure utilisée pour représenter des
fonctions anonymes en PHP. Elle est nécessaire car la méthode handle
utilise une instance de cette classe pour la chaîne d’exécution des requêtes.
11
CAS
CASPRATIQUE
PRATIQUE
Middleware de connexion utilisateur
3. use Illuminate\Support\Facades\Auth;
•Cela importe la façade Auth de Laravel. Elle est utilisée pour interagir avec le système
d’authentification et vérifier si un utilisateur est connecté (Auth::check()).
4. class CheckLogin
•Cette ligne déclare une classe PHP appelée CheckLogin. Elle est utilisée pour définir un
middleware personnalisé.
12
CAS
CASPRATIQUE
PRATIQUE
Middleware de connexion utilisateur
5. public function handle($request, Closure $next)
•La méthode handle est obligatoire pour tout middleware Laravel. Elle contient la
logique principale qui intercepte la requête HTTP.
•$request : Représente la requête HTTP entrante.
•Closure $next : Une fonction permettant de passer la requête au prochain middleware
ou au contrôleur.
6. if (!Auth::check())
•Auth::check() retourne true si l'utilisateur est connecté, sinon false.
•Le bloc if (!Auth::check()) vérifie si l'utilisateur n'est pas connecté (! signifie "non").
13
CAS
CASPRATIQUE
PRATIQUE
Middleware de connexion utilisateur
7. return redirect('/login')->with('error', 'Vous devez être connecté.’);
•Si l'utilisateur n'est pas connecté, il est redirigé vers la page de connexion (/login) avec
un message d’erreur.
•with('error', 'Vous devez être connecté.') : Passe une variable temporaire error
contenant le message d’erreur à la vue.
8. return $next($request);
•Si l’utilisateur est connecté, la requête est transférée au prochain middleware ou au contrôleur.
Cela permet au flux normal de la requête de continuer.
14