0
0
Laravelframework~5 mins

Creating middleware in Laravel

Choose your learning style9 modes available
Introduction

Middleware helps you check or change requests before they reach your app. It acts like a gatekeeper for your routes.

To check if a user is logged in before accessing a page.
To log every request made to your app.
To block certain IP addresses from using your site.
To add headers or modify requests and responses.
To verify user roles before allowing access.
Syntax
Laravel
php artisan make:middleware MiddlewareName

// Middleware class example
namespace App\Http\Middleware;

use Closure;
use Illuminate\Http\Request;

class MiddlewareName
{
    public function handle(Request $request, Closure $next)
    {
        // Your code here
        return $next($request);
    }
}

Use php artisan make:middleware to create a new middleware class.

The handle method receives the request and a Closure to pass the request forward.

Examples
This middleware checks if the user is under 18 and redirects them if so.
Laravel
<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Http\Request;

class CheckAge
{
    public function handle(Request $request, Closure $next)
    {
        if ($request->age < 18) {
            return redirect('home');
        }
        return $next($request);
    }
}
This middleware logs the URL of every request before continuing.
Laravel
<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Http\Request;

class LogRequest
{
    public function handle(Request $request, Closure $next)
    {
        logger('Request URL: ' . $request->url());
        return $next($request);
    }
}
Sample Program

This middleware checks if the logged-in user has the role 'admin'. If not, it returns a 403 error. Otherwise, it lets the request continue.

Laravel
<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Http\Request;

class CheckUserRole
{
    public function handle(Request $request, Closure $next)
    {
        if ($request->user()?->role !== 'admin') {
            return response('Access denied', 403);
        }
        return $next($request);
    }
}
OutputSuccess
Important Notes

Remember to register your middleware in app/Http/Kernel.php to use it.

You can apply middleware to routes or groups in your routes file.

Middleware can modify requests or responses as needed.

Summary

Middleware controls access and modifies requests in Laravel.

Create middleware with php artisan make:middleware.

Use the handle method to check or change requests.