Membuat Middleware di Laravel 11

Middleware menyediakan mekanisme yang mudah untuk melakukan filter terhadap request yang masuk ke aplikasi kita. Dalam artikel kali ini kita akan coba membuat middleware, meregistrasikan middleware yang telah dibuat, kemudian menggunakan middleware yang kita buat di route tertentu.
Membuat middleware
Untuk membuat sebuah middleware dapat dilakukan dengan mengetikan perintah betikut di command line / terminal.
php artisan make:middleware InfoMiddleware
Dalam artikel kali ini kita tidak akan membuat middleware yang susah-susah jadi cukup tambahkan dd saja di middleware untuk output yang menandakan middleware kita berhasil dipanggil nantinya.
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
use Symfony\Component\HttpFoundation\Response;
class InfoMiddleware
{
/**
* Handle an incoming request.
*
* @param \Closure(\Illuminate\Http\Request): (\Symfony\Component\HttpFoundation\Response) $next
*/
public function handle(Request $request, Closure $next): Response
{
dd('request masuk ke info middleware');
return $next($request);
}
}
Registrasi Middleware
Setelah middleware dibuat, middleware tersebut tidak akan serta-merta dapat digunakan. middleware yang telah kita buat perlu di registrasikan. Untuk meregistrasikan middleware baru kita dapat menambahkan middleware tersebut di app.php dengan menggunakan alias seperti berikut.
<?php
use Illuminate\Foundation\Application;
use Illuminate\Foundation\Configuration\Exceptions;
use Illuminate\Foundation\Configuration\Middleware;
return Application::configure(basePath: dirname(__DIR__))
->withRouting(
web: __DIR__.'/../routes/web.php',
commands: __DIR__.'/../routes/console.php',
health: '/up',
)
->withMiddleware(function (Middleware $middleware) {
$middleware->alias([
'info' => App\Http\Middleware\InfoMiddleware::class
]);
})
->withExceptions(function (Exceptions $exceptions) {
//
})->create();
Menambahkan Middleware ke Route
Setelah di registrasikan, kita tinggal memanggil middleware yang telah kita buat di route yang kita inginkan dengan alias yang sama seperti di app.php . contoh :
<?php
use Illuminate\Support\Facades\Route;
Route::get('/', function () {
return view('welcome');
})->middleware('info');
setelah itu kita coba akses route yang sudah kita tambahkan middleware tadi. Jika middleware berhasil terpanggil maka akan muncul dd yang telah kita tuliskan tadi.
