Inside this article we will see the concept i.e How To Work with Route Middleware in Laravel 10 Tutorial. Article contains the classified information i.e What is Route Middleware & How to use it in Laravel 10 application.
In Laravel, Middleware is a mechanism that allows developers to filter HTTP requests coming into their application. Route Middleware, specifically, refers to a Middleware that is applied to a single route or a group of routes.
In laravel we have three types of middlewares –
- Global Middleware
- Group Middleware
- Route Middleware
Inside this article, we will see the concept of Route Middleware in Laravel 10 application.
Read More: How To Work with Group Middleware in Laravel 10 Tutorial
Let’s get started.
Laravel Installation
Open terminal and run this command to create a laravel project.
composer create-project laravel/laravel myblog
It will create a project folder with name myblog inside your local system.
To start the development server of laravel –
php artisan serve
URL: http://127.0.0.1:8000
Assuming laravel already installed inside your system.
What is Route Middleware?
Route Middleware allows developers to apply specific filtering logic to a single route or a group of related routes.
This can be particularly useful in situations where you have a set of routes that require a specific type of filtering or processing, such as authentication or role-based access control.
By the help of php artisan command, we create Middleware in laravel.
$ php artisan make:middleware <MiddlewareName>
Middlewares will be stored inside /app/Http/Middleware. To register middleware inside application, Kernel.php file will be used which is inside /app/Http. Kernel.php, it’s a class file which contains registration of middlewares.
Read More: How To Work with Global Middleware in Laravel 10 Tutorial
Example – Route Middleware Implementation
Let’s take an example to understand the concept of route middleware inside laravel application.
- Create a Middleware which checks country, when we open URL.
- Example We will have 3 routes in which a route should be protected by middleware and other two routes will be open to access for everyone.
- US, IN, AFG should be allowed inside application, they can access application routes.
- UK, AUS should be restricted to use or access route.
Create a Middleware
Open project into terminal and run this artisan command.
$ php artisan make:middleware CountryCheck
It will create a file with name CountryCheck.php inside /app/Http/Middleware folder.
Open CountryCheck.php file and write this following code into it.
<?php namespace App\Http\Middleware; use Closure; use Illuminate\Http\Request; class CountryCheck { /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle(Request $request, Closure $next) { if ($request->country && !in_array($request->country, array("us", "in", "afg"))) { return redirect("noaccess"); } return $next($request); } }
If request $request->country is NOT in list of these (US, IN, AFG) then it will open no access page.
Register Middleware in Application
Open Kernel.php from /app/Http. Search for $routeMiddleware and add this.
protected $routeMiddleware = [
//...
'apprestrict' => \App\Http\Middleware\CountryCheck::class,
//...
];
apprestrict is the name of route middleware.
Read More: Laravel 10 Scout How To Add Full Text Search in Table
Create NoAccess & Protected Routes
Open web.php from /routes folder and add these route into it.
//... Route::view("noaccess", "noaccess"); Route::get("route-1", function(){ echo "<h3>Welcome To Route 1</h3>"; }); // Protected by middleware Route::get("route-2", function(){ echo "<h3>Welcome To Route 2</h3>"; })->middleware("apprestrict"); Route::get("route-3", function(){ echo "<h3>Welcome To Route 3</h3>"; });
Next, we need to create noaccess.blade.php file.
Create NoAccess Page
Create a file called noaccess.blade.php inside /resources/views folder. Open file and write this simple code into it.
<h3>Sorry! You have no access to open this page.</h3>
Application Testing
Run this command into project terminal to start development server,
php artisan serve
Normal Routes
URL – http://127.0.0.1:8000/route-1/?country=us
*** Welcome To Route 1 ***
URL – http://127.0.0.1:8000/route-3/?country=uk
*** Welcome To Route 3 ***
Protected Route
URL – http://127.0.0.1:8000/route-2/?country=us
*** Welcome To Route 2 ***
URL – http://127.0.0.1:8000/route-2/?country=uk
Output:
Sorry! You have no access to open this page.
We hope this article helped you to learn about How To Work with Route Middleware in Laravel 10 Tutorial in a very detailed way.
Read More: Laravel 10 YajraBox Server Side Datatable Tutorial
If you liked this article, then please subscribe to our YouTube Channel for PHP & it’s framework, WordPress, Node Js video tutorials. You can also find us on Twitter and Facebook.