Understanding Laravel Middleware
Laravel Middlewares are explained in detain in this artical, including its types (Global, Route, Group, and Parameterized middleware).Furthure more, it is also discussed about its creation, how to register it, and finially how to apply it.
What is Middleware in Laravel?
In Laravel, middleware acts as a bridge between a request and a response.It filter the HTTP requests before entering your application.
You can imagine middleware as a security guard.
Before a request reaches your controller, middleware checks condition like:
- Is the User Logged in (Authenticated)?
- Does the user have admin access?
- From where the request is coming (from a specific IP)?
Laravel provides built-in middleware like authentication and CSRF, and it also allows you to create custom middleware.
Artisan Command for creating Middleware:
php artisan make:middleware MiddlewareName
Example: php artisan make:middleware AgeCheck
Types of Middleware:
Laravel middlewares can be categorized into:
- Global Middleware
- Route Middleware (single middleware)
- Groups Middleware
- Parameterized Middleware
1. Global Middleware:
Global middleware runs on every request.
How to Register Global Middleware (Laravel 11+)
- Create a middleware using the artisan command.
- open
bootstrap/app.php - Add indesite withMiddleware():
/** * import path important * midlewares are stored in App\Http\Middleware */ use App\Http\Middleware\AgeCheck; ->withMiddleware(function (Middleware $middleware) { $middleware->append(AgeCheck::class); });
When to use Global Middleware?
- Logging requests
- Maintenance mode checks
- security headers
- Application-wide validation
2. Route Middleware(Single):
Route middleware is applied to specific routes.
Step # 01 ( Create Middleware )
php artisan make:middleware CheckAge
This creates:
app/Http/Middleware/CheckAge.php
Step # 02 ( Write Logic )
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
class CheckAge
{
public function handle(Request $request, Closure $next)
{
if ($request->age < 18) {
return response("You are not allowed.", 403);
}
return $next($request);
}
}
Step # 03 ( Register Alias )
go to bootstrap/app.php
->withMiddleware(function (Middleware $middleware) {
$middleware->alias([
'checkage' => \App\Http\Middleware\CheckAge::class,
]);
})
Step # 04 ( Apply to Route )
In routes/web.php
use Illuminate\Support\Facades\Route;
Route::get('/restricted', function () {
return "Access Granted";
})->middleware('checkage');
3. Group Middleware
4. Parameterized Middleware