Laravel Middleware: A Practical Tutorial


Middleware is a crucial part of Laravel's HTTP request processing. It allows you to filter and modify incoming requests before they reach your application's routes or controllers. In this practical tutorial, we'll explore the concept of middleware and demonstrate how to use it effectively in your Laravel application.


1. What is Middleware?


Middleware is a series of filters that can process requests and responses globally in your application. It provides a way to perform tasks such as authentication, logging, and request modification. Middleware is executed before a request reaches your application's routes or controllers.


2. Using Built-In Middleware


Laravel comes with several built-in middleware for common tasks:


Authentication Middleware

Use the `auth` middleware to protect routes, ensuring that only authenticated users can access them:


        
Route::get('/dashboard', 'DashboardController@index')->middleware('auth');

Logging Middleware

The `log` middleware can log incoming requests, helping you keep track of request details:


        
Route::get('/profile', 'ProfileController@show')->middleware('log');

Throttle Middleware

Prevent abuse by using the `throttle` middleware to limit the number of requests a user can make within a specified time frame:


        
Route::post('/submit', 'FormController@store')->middleware('throttle:5,1');

3. Creating Custom Middleware


You can also create custom middleware for specific tasks in your application:


Generate Middleware

Create a new middleware using the Artisan command:


        
php artisan make:middleware MyCustomMiddleware

Implement Middleware Logic

In the generated middleware file, implement the logic you want to execute before or after a request. You can access the request and perform actions accordingly:


        
public function handle($request, Closure $next)
{
// Perform actions before the request.
$response = $next($request);
// Perform actions after the request.
return $response;
}

Register Middleware

Register your custom middleware in the `app/Http/Kernel.php` file under the `$middleware` or `$routeMiddleware` property. This makes it available to your routes:


        
'custom' => \App\Http\Middleware\MyCustomMiddleware::class,

4. Applying Middleware to Routes


Apply middleware to routes or route groups by using the `middleware` method or array:


        
Route::get('/secure', 'SecureController@index')->middleware('custom');

5. Middleware Parameters


You can pass parameters to middleware to make them more dynamic:


        
Route::post('/api', 'ApiController@process')->middleware('rate.limit:60,1');

6. Conclusion


Laravel middleware is a powerful feature for filtering and modifying incoming requests in your application. Whether you're using built-in middleware or creating custom middleware, it offers a flexible and extensible way to handle tasks such as authentication, logging, and request modification. By following this tutorial, you can harness the full potential of middleware in your Laravel application.

For further learning, consult the official Laravel documentation and explore practical tutorials and examples related to middleware in Laravel web development.