🛠 Creating Middleware in Laravel
Middleware allows you to inspect or modify HTTP requests before they reach your controller. You can easily create custom middleware using Artisan.
🔍 Why Create Custom Middleware?
- Add custom logic like age verification, role checks, or custom headers
- Reuse the logic across multiple routes
- Separate concerns for better maintenance
📦 Generate Middleware
Run the following Artisan command:
php artisan make:middleware CheckAge
This will create: app/Http/Middleware/CheckAge.php
✍️ Add Logic in Middleware
public function handle($request, Closure $next)
{
if ($request->age < 18) {
return redirect('no-access');
}
return $next($request);
}
Here, if age is less than 18, the user is redirected.
🛠 Register in Kernel
Open app/Http/Kernel.php and register it in the $routeMiddleware array:
protected $routeMiddleware = [
// ...
'check.age' => \App\Http\Middleware\CheckAge::class,
];
This makes it available by alias check.age.
🔗 Route Middleware
Route::get('/restricted', function () {
return 'Access Granted!';
})->middleware('check.age');
The middleware runs before the route logic.
📁 Group or Global Usage
- Add to
$middlewareGroupsforweborapi - Add to
$middlewarefor all requests (global)
⚙️ Middleware with Parameters
public function handle($request, Closure $next, $role)
{
if ($request->user()->role !== $role) {
return redirect('unauthorized');
}
return $next($request);
}
Use it in routes like: ->middleware('role:admin')


