Laravel: Menetukan Level Prioritas Middleware untuk Kasus Tertentu

Alfajri
1 min readMar 12, 2024

--

Photo by Franck on Unsplash

Framework laravel memiliki sebuah middleware yang dapat digunakan dalam mengatasi autentifikasi dan sebagainya. Ada kasus dimana pada satu route kamu perlu 2 middleware yang berbeda.

Contoh kasusnya ialah saya ingin membuat fitur autentifikasi user dimana ada 2 step validasi pada middleware, yang pertama ialah cek apakah user memiliki cookie yang ada dibrowsernya. Kemudian jika ada, data cookie tersebut yang akan digunakan untuk autentifikasi pada laravel dengan Auth::attempt(). Langkah awal saya akan membuah grouping middleware pada suatu route

Route::middleware(['global','auth:user,admin,parent,teacher'])
->group(function () { .... }

Kode diatas menunjukkan saya memiliki 1 middleware custom untuk cek cookie dan satu middleware bawaan laravel untuk mengecek apakah user sudah login atau belum.

Jika kita set seperti diatas laravel akan membaca middleware defaultnya terlebih dahulu yaitu auth kemudian global,dan ini bukan yang saya ingin buat. Saya ingin dicek dari middleware global lalu auth.

Untuk mengatasi tersebut kita perlu membuat Middleware Priority yaitu masuk ke dalam kernel.php lalu buat $middlewarePriority

protected $middlewarePriority = [
'global' => \App\Http\Middleware\AutentifikasiGlobal::class,
];

protected $routeMiddleware = [
'global' => \App\Http\Middleware\AutentifikasiGlobal::class,
'auth' => \App\Http\Middleware\Authenticate::class,
.....
];

Setelah kita set seperti diatas maka secara otomatis middleware global akan diprioritaskan terlebih dahulu untuk dieksekusi.

--

--

Alfajri
Alfajri

Written by Alfajri

Halo saya feri, tertarik pada teknologi dan seni. Ingin berbagi cerita dan pengalaman serta mencoba belajar menulis

No responses yet