Laravel 12 CRUD (MySQL + JWT)
#11 Melindungi Rute CRUD dengan Middleware JWT
Di artikel sebelumnya, kita sudah membuat endpoint registrasi dan login yang mengembalikan token JWT. Saatnya melindungi rute CRUD siswa dengan middleware
auth:api. Middleware ini akan memeriksa apakah request menyertakan token JWT yang valid. Jika tidak, pengguna akan mendapat error 401 Unauthorized. Yuk kita pasang! 🚀
Langkah 1: Apa Itu Middleware auth:api?
🔍 Middleware adalah lapisan yang memeriksa request sebelum sampai ke controller. auth:api adalah middleware bawaan Laravel yang menggunakan guard api untuk memverifikasi autentikasi. Karena kita sudah mengkonfigurasi guard api dengan driver jwt (di artikel #8), middleware ini akan memeriksa token JWT.
Jika token valid, request diteruskan ke controller. Jika tidak, Laravel akan mengembalikan respons 401 Unauthorized.
Langkah 2: Modifikasi Rute API untuk Melindungi CRUD Siswa
1 Buka file routes/api.php. Saat ini kita memiliki rute untuk autentikasi dan rute resource siswa yang belum dilindungi. Kita akan mengelompokkan rute siswa dalam grup middleware auth:api.
Ubah isi routes/api.php menjadi seperti ini:
Penjelasan:
middleware('auth:api')→ semua rute di dalam grup ini akan melewati middleware auth dengan guard api.Route::apiResource('siswa', SiswaController::class);→ sekarang rute siswa hanya bisa diakses oleh pengguna yang sudah login dan memiliki token valid.
Langkah 3: Uji Coba – Akses Tanpa Token
2 Pastikan server Laravel berjalan (php artisan serve). Buka Postman, coba akses endpoint siswa tanpa menyertakan token:
- Method: GET
- URL:
http://localhost:8000/api/siswa - Klik Send.
Respons yang diharapkan (status 401):
Berhasil! Endpoint siswa sekarang tidak bisa diakses tanpa token.
Langkah 4: Dapatkan Token JWT (Login)
3 Sebelum mengakses endpoint siswa, kita harus login terlebih dahulu untuk mendapatkan token. Gunakan Postman:
- Method: POST
- URL:
http://localhost:8000/api/login - Body (raw JSON):
Salin token dari respons. Token akan digunakan di header Authorization.
Langkah 5: Akses Endpoint Siswa dengan Token
4 Sekarang coba akses endpoint siswa dengan menyertakan token:
- Method: GET
- URL:
http://localhost:8000/api/siswa - Tab Authorization → pilih Bearer Token → masukkan token yang didapat dari login.
- Klik Send.
Respons sukses (status 200):
🎉 Berhasil! Sekarang endpoint CRUD siswa hanya bisa diakses oleh pengguna yang memiliki token valid.
Langkah 6: Uji Semua Endpoint CRUD dengan Token
5 Uji semua method CRUD dengan menyertakan token di header Authorization. Pastikan semuanya berjalan:
- POST /api/siswa → tambah data (body JSON: nama, kelas, alamat)
- GET /api/siswa/{id} → ambil detail
- PUT /api/siswa/{id} → update data
- DELETE /api/siswa/{id} → hapus data
Semua harus mengembalikan respons sukses (200, 201, dll) jika token valid.
Ringkasan Langkah
- ✅ Buka
routes/api.php. - ✅ Kelompokkan rute siswa dalam grup
middleware('auth:api'). - ✅ Uji akses tanpa token → harus 401 Unauthorized.
- ✅ Login untuk mendapatkan token.
- ✅ Akses endpoint siswa dengan menyertakan token di header Authorization.
- ✅ Pastikan semua method CRUD berfungsi.
📌 Ingat: Middleware auth:api menggunakan guard api yang sudah kita konfigurasi dengan driver jwt. Jika ada error, pastikan konfigurasi di config/auth.php sudah benar.
(Link akan aktif saat artikel sebelumnya dan selanjutnya terbit)