Understand the Basics of Laravel Middleware

In this article, we’ll dive deep into the Laravel framework to understand the concept of middleware. The first half of the article begins with an introduction to middleware and what it’s actually used for.

As we move on, we’ll cover how to create custom middleware in a Laravel application. After creation of your custom middleware, we’ll explore the options available to register it with Laravel so that it could be actually invoked during the request processing flow.

I hope that you consider yourself familiar with basic Laravel concepts and the Artisan command-line tool to generate the scaffolding code. Of course, a working installation of the latest Laravel application allows you to run the examples provided in this article straight away.

What Is Middleware in Laravel?

We could think of middleware as a mechanism that allows you to hook into the typical request processing flow of a Laravel application. A typical Laravel route processing goes through certain stages of request processing, and the middleware is one of those layers an application has to pass through.

So what exactly is the point of hooking into the Laravel request processing flow? Think of something that requires an execution at the early stages of bootstrapping of an application. For example, it’s necessary to authenticate users at the early stages to decide whether they’re allowed to access the current route.

A few things I could think of that you could achieve through middleware are:

  • logging of requests
  • redirecting users
  • altering/sanitizing the incoming parameters
  • manipulating the response generated by the Laravel application
  • and many more

In fact, the default Laravel application already ships a couple of important pieces of middleware with it. For example, there’s middleware that checks if the site is in maintenance mode. On the other hand, there’s middleware to sanitize the input request parameters. As I mentioned earlier, the user authentication is also achieved by the middleware itself.

I hope that the explanation so far helps you to feel more confident about the term middleware. If you’re still confused, don’t worry about it as we’re going to build a piece of custom middleware from the next section onwards that should help you understand exactly how middleware could be used in the real world.

How to Create Custom Middleware

In this section, we’ll create our custom middleware. But what exactly is our custom middleware going to accomplish?

Recently, I came across a custom requirement from my client that if users access the site from any mobile device, they should be redirected to the corresponding sub-domain URL with all the querystring parameters intact. I believe this is the perfect use case to demonstrate how Laravel middleware could be used in this particular scenario.

The reason why we would like to use middleware in this case is the need to hook into the request flow of the application. In our custom middleware, we’ll inspect the user agent, and users are redirected to the corresponding mobile URL if they are using a mobile device.

Having discussed all that theory, let’s jump into the actual development, and that’s the best way to understand a new concept, isn’t it?

As a Laravel developer, it’s the Artisan tool that you’ll end up using most of the time to create basic template code should you wish to create any custom functionality. Let’s use it to create a basic template code for our custom middleware.

Head over to the command line and go the document root of your project. Run the following command to create the custom middleware template MobileRedirect.

And that should create a file app/Http/Middleware/MobileRedirect.php with the following code.

Leave a Comment

Scroll to Top