Laravel Routage: Middleware
Introduction
Les middlewares dans Laravel sont des couches intermédiaires qui traitent les requêtes entrantes avant qu'elles n'atteignent la logique de votre application. Ce tutoriel approfondi explore l'utilisation des middlewares dans le routage de Laravel.
Exemples
Déclaration d'un Middleware :
// Création d'un middleware personnalisé
php artisan make:middleware MonMiddleware
// MonMiddleware.php
class MonMiddleware
{
public function handle($request, Closure $next)
{
// Logique à exécuter avant la requête
return $next($request);
}
}
// Kernel.php
protected $middleware = [
// ...
\App\Http\Middleware\MonMiddleware::class,
];
Utilisation du Middleware dans une Route :
// web.php
Route::get('/profil', function () {
return 'Affichage du profil utilisateur';
})->middleware('MonMiddleware');
Middleware avec Paramètres :
// MonMiddleware.php
public function handle($request, Closure $next, $parametre)
{
// Logique à exécuter avec le paramètre
return $next($request);
}
// Kernel.php
protected $routeMiddleware = [
// ...
'monMiddleware' => \App\Http\Middleware\MonMiddleware::class,
];
// web.php
Route::get('/page', function () {
return 'Affichage de la page';
})->middleware('monMiddleware:monParametre');
Remarques
- Les middlewares peuvent être appliqués globalement, par groupe de routes, ou individuellement sur chaque route.
- Un middleware peut effectuer des actions avant et après la requête, et même arrêter la requête si nécessaire.
- Les middlewares peuvent être des classes prédéfinies ou personnalisées selon les besoins.
Exercices Corrigés
Créez un middleware qui vérifie si l'utilisateur est authentifié avant d'accéder à certaines routes.
// AuthMiddleware.php
class AuthMiddleware
{
public function handle($request, Closure $next)
{
if (auth()->check()) {
return $next($request);
} else {
return redirect('/connexion');
}
}
}
// Kernel.php
protected $routeMiddleware = [
// ...
'auth' => \App\Http\Middleware\AuthMiddleware::class,
];
// web.php
Route::get('/tableau-de-bord', function () {
return 'Tableau de bord confidentiel';
})->middleware('auth');
Créez un middleware qui ajoute des en-têtes de sécurité à toutes les réponses de votre application.
// SecuriteMiddleware.php
class SecuriteMiddleware
{
public function handle($request, Closure $next)
{
$response = $next($request);
$response->header('Strict-Transport-Security', 'max-age=31536000; includeSubDomains');
return $response;
}
}
// Kernel.php
protected $middleware = [
// ...
\App\Http\Middleware\SecuriteMiddleware::class,
];
Questions à Choix Multiple
Évaluez votre compréhension avec cette question :
Quelle méthode de Laravel est utilisée pour créer un middleware personnalisé?
- A. `php artisan create:middleware`
- B. `php artisan make:middleware`
- C. `php artisan middleware:create`
Réponse correcte : B
Questions & Réponses
Consultez cette section pour trouver des réponses aux questions fréquemment posées sur l'utilisation des middlewares dans le routage de Laravel.
Q: Un middleware peut-il arrêter complètement une requête?
R: Oui, un middleware peut décider de ne pas appeler la prochaine couche de la requête et ainsi arrêter complètement le processus.
Éléments à Retenir
- Les middlewares dans Laravel sont des couches intermédiaires qui traitent les requêtes avant qu'elles n'atteignent la logique de l'application.
- Les middlewares peuvent être appliqués globalement, par groupe de routes, ou individuellement sur chaque route.
- Un middleware peut effectuer des actions avant et après la requête, et même arrêter la requête si nécessaire.
- Les middlewares peuvent être des classes prédéfinies ou personnalisées selon les besoins.