Cara Membuat Middleware Berbasis Request di Laravel
Dalam pengembangan aplikasi Laravel skala besar seperti Sistem Informasi Kampus dan yang lainnya, keamanan dan kontrol akses tidak boleh hanya bergantung pada tampilan (UI). Kita membutuhkan lapisan pengamanan di sisi server yang mampu memeriksa setiap permintaan (request) sebelum diproses oleh controller.
Laravel menyediakan fitur yang sangat powerful untuk hal ini, yaitu Middleware.
Artikel ini akan membahas secara lengkap dan SEO-oriented:
Apa itu middleware di Laravel
Mengapa middleware berbasis Request sangat penting
Cara membuat middleware sendiri
Cara membaca data dari Request di middleware
Contoh implementasi nyata untuk sistem akademik
Best practice keamanan
1. Apa Itu Middleware di Laravel?
Middleware adalah lapisan penyaring (filter) yang dijalankan sebelum atau sesudah request diproses oleh controller.
Secara sederhana:
Middleware adalah “satpam” yang memeriksa setiap request yang masuk.
Contoh middleware bawaan Laravel:
auth→ memastikan user sudah loginverified→ memastikan email sudah diverifikasithrottle→ membatasi jumlah request
Di sistem akademik:
Kita butuh middleware untuk memeriksa apakah:
User adalah dosen atau prodi
Tahun akademik masih aktif
User berhak input nilai
Request berasal dari modul yang benar
Semua itu bisa dilakukan menggunakan middleware berbasis Request.
2. Mengapa Middleware Berbasis Request Itu Penting?
Karena request membawa informasi penting seperti:
URL
Route
Method
User yang login
Session
Parameter
Dengan membaca Request di middleware, kita bisa membuat aturan seperti:
“Jika request ke
/sido/nilai, maka hanya dosen koordinator yang boleh”“Jika tahun akademik tidak aktif, blok semua input nilai”
“Jika user bukan prodi, jangan izinkan akses
/inputs”
Tanpa middleware:
User bisa mencoba mengakses URL secara manual dan menembus sistem.
3. Membuat Middleware Baru
Jalankan perintah:
php artisan make:middleware CheckTahunAkademikAktif
Laravel akan membuat file:
app/Http/Middleware/CheckTahunAkademikAktif.php4. Struktur Dasar Middleware
Buka file tersebut:
<?php
namespace App\Http\Middleware;
use Closure;
class CheckTahunAkademikAktif
{
public function handle($request, Closure $next)
{
return $next($request);
}
}
Method handle() menerima:
$request→ object Request$next→ melanjutkan ke controller jika lolos
5. Membaca Data Request di Middleware
Kita bisa membaca berbagai informasi:
$request->path();
$request->method();
$request->segment(1);
$request->route()->getName();
$request->user();
Contoh:
$module = $request->segment(1); // sido, inputs, akademik
$routeName = $request->route()->getName();
$user = $request->user();6. Contoh Middleware: Cek Tahun Akademik Aktif
Misalnya di SIMPOL, dosen hanya boleh input nilai pada tahun akademik aktif.
use App\Utils\SaifiUtil;
public function handle($request, Closure $next)
{
if($request->segment(1) == 'sido'){
if($request->input('tahun_akademik_id') != SaifiUtil::getTahunAkademikAktifID()){
abort(403,'Tahun akademik tidak aktif');
}
}
return $next($request);
}
Ini berarti:
Hanya request dari
/sidoyang dicekProdi tidak terkena aturan ini
7. Contoh Middleware: Memisahkan Dosen dan Prodi
Buat middleware:
php artisan make:middleware CheckSidoAccess
Isi:
public function handle($request, Closure $next)
{
if($request->segment(1) == 'sido'){
if(!$request->user()->can('input-nilai')){
abort(403,'Anda bukan dosen koordinator');
}
}
return $next($request);
}8. Mendaftarkan Middleware
Di app/Http/Kernel.php
Tambahkan:
protected $routeMiddleware = [
'check.sido' => \App\Http\Middleware\CheckSidoAccess::class,
'check.tahun' => \App\Http\Middleware\CheckTahunAkademikAktif::class,
];9. Menggunakan Middleware di Route
Route::middleware(['auth','check.sido','check.tahun'])->group(function(){
Route::post('/sido/nilai','InputController@store');
});
Artinya:
Harus login
Harus dosen koordinator
Harus tahun akademik aktif
Baru boleh simpan nilai.
10. Kenapa Ini Lebih Aman daripada Cek di Controller?
Karena middleware dijalankan sebelum controller dipanggil.
Jika ditolak:
Controller tidak dieksekusi
Database tidak disentuh
Lebih aman
11. Praktik Enterprise di Sistem Akademik
Di sistem kampus profesional:
Semua akses dosen dikunci di middleware
Semua akses prodi dikunci di middleware
Semua tahun akademik dikontrol di middleware
Controller hanya fokus pada:
bisnis logic, bukan keamanan
12. Kesimpulan
Middleware berbasis Request adalah:
Tulang punggung keamanan Laravel
Kunci arsitektur sistem akademik
Fondasi aplikasi enterprise
Dengan middleware, kamu bisa:
Memisahkan dosen dan prodi
Mengunci tahun akademik
Mengontrol modul
Mencegah manipulasi URL
Jika kamu membangun sistem informasi, maka middleware berbasis Request bukan opsi — tapi kewajiban.
No comments:
Post a Comment