Mastering Laravel Middleware – Part 1

aravel Laravel Views & Blade Templates – Beginner’s Guide

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

  1. Request enters your app.
  2. Passes through middleware layers.
  3. Middleware can inspect, modify, or reject requests.
  4. If allowed, request continues to the controller.
  5. Response goes back through middleware again (after middleware can modify it).

Important

  • Middleware are filters for requests and responses.
  • Use php artisan make:middleware to 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.