Dans le cadre de Laravel, le middleware est une partie importante du processus de gestion des demandes HTTP et est souvent utilisé pour des fonctions telles que l'authentification, la vérification de l'autorisation, la journalisation et la modification des demandes. Il fournit un moyen flexible et élégant d'intercepter et de traiter les demandes, ce qui rend la logique de l'application plus claire et plus structurée.
Le middleware de Laravel est situé dans le répertoire APP / HTTP / Middleware et peut être créé via la commande Artisan ou manuellement. Le middleware est essentiellement une classe qui reçoit des demandes et renvoie les réponses. La fonction principale est Handle () , qui accepte un objet de demande et une fermeture. Après le traitement de la logique, la demande sera transmise ou directement retournée à la réponse.
Lorsqu'une demande HTTP atteint l'application, le système exécutera chaque middleware en séquence en fonction de l'ordre d'enregistrement du middleware. Si un middleware renvoie une réponse, le processus de traitement suivant sera interdit et le résultat sera retourné directement au client.
L'enregistrement du middleware est divisé en deux manières: l'enregistrement global et l'enregistrement de routage. Le middleware global agit sur toutes les demandes et est défini dans la propriété $ middleware dans le fichier app / http / kernel.php :
protected $middleware = [
\App\Http\Middleware\CheckToken::class,
];
Si vous voulez que le middleware agisse sur une voie spécifique, vous pouvez utiliser $ RouteMiddleware pour vous inscrire:
protected $routeMiddleware = [
'checkRole' => \App\Http\Middleware\CheckRole::class,
];
Reportez-vous ensuite à la méthode du middleware dans l'itinéraire:
Route::get('/admin', function () {
// Page backend
})->middleware('checkRole');
L'ordre dans lequel le middleware est exécuté dépend de son ordre d'enregistrement. Le middleware global est exécuté par ordre de tableaux, tandis que le middleware de routage est exécuté par ordre d'arrangement dans les définitions de route. Vous pouvez utiliser la commande PHP Artisan Route: Liste pour afficher l'utilisation du middleware.
Lorsque plusieurs itinéraires partagent la même collection de middleware, la gestion peut être simplifiée par le regroupement. Par exemple:
Route::group(['middleware' => 'admin'], function () {
// Tous les itinéraires d'arrière-plan
});
À l'heure actuelle, tous les itinéraires du groupe chargeront automatiquement le middleware admin .
Ce qui suit est un exemple d'authentification pour afficher l'application spécifique du middleware:
1. Créer des middleware:
php artisan make:middleware Authenticate
2. Écrivez la logique du middleware:
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
class Authenticate
{
public function handle(Request $request, Closure $next)
{
$token = $request->header('Authorization');
if ($token != 'secret_token') {
return response()->json(['error' => 'Unauthorized'], 401);
}
return $next($request);
}
}
3. Enregistrer middleware:
protected $middleware = [
\App\Http\Middleware\Authenticate::class,
];
4. Appliqué au routage:
Route::get('/api', function () {
// Interface protégée
})->middleware('auth');
Ce middleware vérifiera le champ d'autorisation dans l'en-tête de demande. Si le jeton prédéfini ne correspond pas, il renverra directement une erreur 401; Sinon, la demande continuera d'être traitée.
Laravel Middleware offre aux développeurs des moyens puissants et flexibles d'intercepter et de traiter les demandes HTTP. En utilisant le middleware rationnellement, la logique du contrôleur peut être simplifiée, la sécurité du système et la maintenabilité peuvent être améliorées. La maîtrise des principes et des compétences d'application du middleware aidera à créer des applications Web plus robustes.