Laravel Middleware Tutorial
Middleware are like filters that every HTTP request passes through before reaching your application. They can inspect, modify, or block requests (e.g., checking if a user is authenticated).
What is Middleware?
- Middleware sits between the request and your application logic.
- Example: Authentication middleware ensures only logged-in users can access certain routes.
- Laravel already includes useful middleware like authentication, CSRF protection, etc.
- Custom middleware lives in
app/Http/Middleware.
Creating Middleware
Use Artisan to create a new middleware:
php artisan make:middleware EnsureTokenIsValid
This creates a new class in app/Http/Middleware/EnsureTokenIsValid.php.
Example middleware to check for a token:
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
use Symfony\Component\HttpFoundation\Response;
class EnsureTokenIsValid
{
public function handle(Request $request, Closure $next): Response
{
if ($request->input('token') !== 'my-secret-token') {
return redirect('/home'); // Block request if token is invalid
}
return $next($request); // Allow request to continue
}
}
$next($request) forwards the request to the next layer (or controller).
Middleware and Responses
Middleware can run before or after the request is handled.
Before Middleware
Runs before the request reaches your app.
class BeforeMiddleware
{
public function handle(Request $request, Closure $next): Response
{
// Perform action BEFORE request
logger('Request received.');
return $next($request);
}
}
After Middleware
Runs after the request is processed by your app.
class AfterMiddleware
{
public function handle(Request $request, Closure $next): Response
{
$response = $next($request);
// Perform action AFTER request
logger('Response sent.');
return $response;
}
}
How Middleware Works
- Request enters your app.
- Passes through middleware layers.
- Middleware can inspect, modify, or reject requests.
- If allowed, request continues to the controller.
- Response goes back through middleware again (after middleware can modify it).
Important
- Middleware are filters for requests and responses.
- Use
php artisan make:middlewareto create one. $next($request)→ lets the request continue.- Can run tasks before or after handling a request.
- Common use cases: authentication, logging, CSRF, request validation.
