Laravel 12 CRUD (MySQL + JWT) #12: Menguji Autentikasi – Dapatkan Token

Laravel 12 CRUD (MySQL + JWT)
#12 Menguji Autentikasi – Dapatkan Token

🔑 Uji registrasi • Login • Gunakan token untuk akses CRUD
🧪 Sekarang kita uji seluruh alur autentikasi JWT!
Di artikel sebelumnya kita sudah memasang middleware dan melindungi endpoint CRUD. Sekarang saatnya menguji dari awal: registrasi user baru, login untuk mendapatkan token, lalu menggunakan token tersebut untuk mengakses endpoint siswa. Juga kita akan uji kasus error (token salah, token kadaluarsa, dll). Yuk ikuti langkah-langkah di Postman! 🚀

Prasyarat

  • ✅ Server Laravel berjalan: php artisan serve
  • ✅ Postman terinstall dan siap digunakan
  • ✅ Database sudah berisi tabel users dan siswa

Uji Registrasi User Baru

1 Endpoint: POST /api/register

  • Buka Postman, buat request baru.
  • Method: POST
  • URL: http://localhost:8000/api/register
  • Tab Body → raw → JSON, masukkan data:
{ "name": "Siti Aisyah", "email": "siti@example.com", "password": "rahasia123", "password_confirmation": "rahasia123" }

Klik Send. Respons sukses (status 201) akan seperti ini:

{ "success": true, "message": "User registered successfully", "user": { "name": "Siti Aisyah", "email": "siti@example.com", "updated_at": "2025-03-24T12:00:00.000000Z", "created_at": "2025-03-24T12:00:00.000000Z", "id": 4 }, "token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9...", "token_type": "bearer", "expires_in": 3600 }

Yang perlu dicatat: Setelah registrasi, langsung diberikan token. Simpan token ini (bisa juga nanti login lagi).

💡 Tips: Jika sudah pernah registrasi dengan email yang sama, akan muncul error validasi email already taken.

Uji Login Mendapatkan Token

2 Endpoint: POST /api/login

  • Buat request baru, method POST.
  • URL: http://localhost:8000/api/login
  • Body (raw JSON):
{ "email": "siti@example.com", "password": "rahasia123" }

Respons sukses (status 200):

{ "success": true, "message": "Login successful", "token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9...", "token_type": "bearer", "expires_in": 3600, "user": { "id": 4, "name": "Siti Aisyah", "email": "siti@example.com", ... } }

Salin token yang diterima. Ini akan digunakan untuk autentikasi di endpoint yang dilindungi.

Akses Endpoint CRUD dengan Token (Bearer Token)

3 Contoh: GET semua siswa

  • Buat request baru, method GET.
  • URL: http://localhost:8000/api/siswa
  • Pada tab Authorization, pilih Bearer Token.
  • Isi kolom token dengan token yang didapat dari login.
  • Klik Send.

Respons sukses (status 200):

{ "success": true, "data": [...] }

Coba juga method lain dengan token yang sama:

  • POST /api/siswa (tambah siswa) → body JSON: {"nama":"Ujang","kelas":"7A","alamat":"Jl. Anggrek"}
  • GET /api/siswa/{id} → detail
  • PUT /api/siswa/{id} → update
  • DELETE /api/siswa/{id} → hapus

Uji Tanpa Token (Akses Ditolak)

4 Hapus atau jangan sertakan token di header. Akses GET /api/siswa. Respons:

{ "message": "Unauthenticated." }

Status: 401 Unauthorized. Berarti proteksi bekerja dengan baik.

Uji dengan Token Salah atau Kadaluarsa

5 Coba ganti token dengan string acak (misal "abc123") atau token yang sudah dimodifikasi. Akses endpoint. Respons:

{ "message": "Unauthenticated." }

Token tidak valid akan ditolak.

📌 Catatan: Token JWT memiliki masa berlaku (default 1 jam). Setelah kadaluarsa, pengguna perlu login ulang atau menggunakan endpoint /api/refresh (dengan token lama yang masih valid untuk refresh).

Uji Logout (Invalidasi Token)

6 Endpoint: POST /api/logout (dilindungi auth:api)

  • Buat request POST ke http://localhost:8000/api/logout.
  • Sertakan token yang valid di header Authorization (Bearer Token).
  • Klik Send. Respons sukses:
{ "success": true, "message": "Successfully logged out" }

Setelah logout, token menjadi tidak valid. Coba gunakan token yang sama untuk mengakses GET /api/siswa, akan mendapat error 401.

Uji Refresh Token (Opsional)

7 Jika token mendekati kadaluarsa, kita bisa memperpanjang masa aktif tanpa login ulang. Endpoint: POST /api/refresh

  • Buat request POST ke http://localhost:8000/api/refresh.
  • Sertakan token yang masih valid (belum kadaluarsa) di header Authorization.
  • Respons akan memberikan token baru.
{ "success": true, "token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9...", "token_type": "bearer", "expires_in": 3600 }

Gunakan token baru untuk request selanjutnya.

💡 Praktik baik: Simpan token di memori atau storage yang aman (misal localStorage untuk web, atau secure storage untuk mobile).
🎉 Semua pengujian autentikasi berhasil! Sekarang kita yakin bahwa sistem JWT berjalan dengan benar: registrasi, login, proteksi endpoint, logout, dan refresh token. API kita sudah aman dan siap digunakan.

Ringkasan Endpoint dan Cara Penggunaan

  • Registrasi: POST /api/register (body: name, email, password, password_confirmation) → token langsung diberikan
  • Login: POST /api/login (body: email, password) → dapatkan token
  • Logout: POST /api/logout (Bearer token) → invalidasi token
  • Refresh: POST /api/refresh (Bearer token) → dapatkan token baru
  • Profil: GET /api/me (Bearer token) → lihat data user
  • CRUD Siswa: semua endpoint /api/siswa dilindungi, harus menyertakan Bearer token

📌 Catatan Penting: Token JWT harus disimpan dengan aman dan jangan pernah dibagikan. Untuk keperluan pengembangan, cukup simpan di Postman environment atau variabel.

(Link akan aktif saat artikel sebelumnya dan selanjutnya terbit)

📘 Laravel 12 CRUD (MySQL + JWT) • #12 Menguji Autentikasi – Dapatkan Token • 🔐 Autentikasi berhasil!
Lebih baru Lebih lama

نموذج الاتصال