Laravel: Créer et utiliser un middleware
Laravel: Créer et utiliser un middleware
-
Objectifs
- Etre capable de créer un middleware sous Laravel
- Savoir utiliser un middleware sous Laravel
-
Présentation
-
Créer middleware
- La façon la plus simple de créer un middleware est d’utiliser Artisan. Appeler la commande
make:middleware
a pour effet de créer une structure de base de middleware dans le dossier réservé à cet usage : app/Http/Middleware. php artisan make:middleware EnsureTokenIsValid
- Cette commande placera une nouvelle classe EnsureTokenIsValid dans le répertoire app/Http/Middleware.
- Dans ce middleware, nous n’autoriserons l’accès à la route que si l’entrée token fournie correspond à une valeur spécifiée. Sinon, nous redirigerons les utilisateurs vers l’URI home:
-
Enregistrement d’un middleware
- Maintenant que nous avons créé un middleware, nous devons informer l’application que le middleware existe. Si vous souhaitez qu’un middleware s’exécute à chaque demande, accédez à
app/Http/kernel.php
et ajoutez le middleware au Kernel. -
Activité
-
Étape 1: créer un middleware
- Dans cette étape, nous devons créer un middleware personnalisé dans un projet basé sur laravel. Alors ouvrons votre invite de commande et exécutons la commande ci-dessous:
php artisan make:middleware CheckStatus
- Après avoir créé avec succès le middleware, accédez à app/http/kernel.php et enregistrez votre middleware personnalisé ici:
- Après avoir enregistré avec succès votre middleware dans le projet laravel, accédez à app/http/middleware et implémentez votre logique ici: app/Http/Middleware/CheckStatus.php
-
Étape 2: Ajouter une route
- Dans cette étape, nous allons simplement créer une route et utiliser un middleware personnalisé ici. Filtrez chaque requête http et protégez les routes:
-
Étape 3: Ajouter une méthode dans le contrôleur
- Nous allons maintenant créer un langage de nom de méthode et vérifier: app/Http/Contrôleurs/HomeController.php
- https://www.tutsmake.com/laravel-6-custom-middleware-tutorial-example/
<?php
namespace App\Http\Middleware;
use Closure;
class EnsureTokenIsValid
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
if ($request->input('token') !== 'my-secret-token') {
return redirect('home');
}
return $next($request);
}
}
<?php
namespace App\Http;
use Illuminate\Foundation\Http\Kernel as HttpKernel;
class Kernel extends HttpKernel
{
....
/**
* The application's route middleware.
*
* These middleware may be assigned to groups or used individually.
*
* @var array
*/
protected $routeMiddleware = [
....
'checkStatus' => \App\Http\Middleware\CheckStatus::class,
];
}
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
class CheckStatus
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle(Request $request, Closure $next)
{
if (auth()->user()->status == 'active') {
return $next($request);
}
return response()->json('Your account is inactive');
}
}
//routes/web.php
Route :: middleware (['checkStatus']) -> group (function () {
Route :: get ('home', ' HomeController @ home ');
});
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class HomeController extends Controller
{
public function home()
{
dd('You are active');
}
}
Source: