Laravel 12 CRUD (MySQL + JWT) #8: Install dan Konfigurasi JWT (tymon/jwt-auth)

Laravel 12 CRUD (MySQL + JWT)
#8 Install dan Konfigurasi JWT (tymon/jwt-auth)

📦 Pasang package JWT • Konfigurasi • Buat kunci rahasia
🔑 API kita butuh keamanan! Saatnya memasang JWT.
JWT (JSON Web Token) adalah metode autentikasi yang populer untuk API. Pengguna akan login dan mendapatkan token, lalu token tersebut digunakan untuk mengakses endpoint yang dilindungi.
Kita akan menggunakan package tymon/jwt-auth, package JWT paling populer untuk Laravel. Yuk kita pasang! 🚀

Langkah 1: Install Package JWT via Composer

1 Buka terminal/CMD di folder proyek siswaapi. Jalankan perintah:

composer require tymon/jwt-auth

Perintah ini akan mengunduh dan menginstall package JWT beserta dependensinya. Tunggu hingga proses selesai.

💡 Catatan: Pastikan koneksi internet stabil. Proses ini mungkin memakan waktu beberapa menit.

Langkah 2: Publikasikan Konfigurasi JWT

2 Setelah package terinstall, kita perlu mempublikasikan file konfigurasi JWT. Jalankan perintah:

php artisan vendor:publish --provider="Tymon\JWTAuth\Providers\LaravelServiceProvider"

Perintah ini akan membuat file config/jwt.php yang berisi semua pengaturan JWT.

Langkah 3: Generate Secret Key JWT

3 JWT membutuhkan secret key untuk menandatangani token. Generate key dengan perintah:

php artisan jwt:secret

Perintah ini akan menghasilkan kunci rahasia dan secara otomatis menambahkannya ke file .env sebagai JWT_SECRET=....

🎉 Selamat! Secret key JWT sudah tergenerate. Jangan pernah membagikan key ini ke publik!

Langkah 4: Konfigurasi Model User

4 Agar JWT dapat bekerja dengan model User kita, kita perlu menambahkan trait JWTSubject ke model User. Buka app/Models/User.php dan ubah menjadi:

<?php namespace App\Models; // use Illuminate\Contracts\Auth\MustVerifyEmail; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Notifications\Notifiable; use Tymon\JWTAuth\Contracts\JWTSubject; // tambahkan ini class User extends Authenticatable implements JWTSubject // tambahkan implements { use HasFactory, Notifiable; /** * The attributes that are mass assignable. * * @var array<int, string> */ protected $fillable = [ 'name', 'email', 'password', ]; /** * The attributes that should be hidden for serialization. * * @var array<int, string> */ protected $hidden = [ 'password', 'remember_token', ]; /** * Get the identifier that will be stored in the subject claim of the JWT. */ public function getJWTIdentifier() { return $this->getKey(); } /** * Return a key value array, containing any custom claims to be added to the JWT. */ public function getJWTCustomClaims() { return []; } }

Penjelasan:

  • Implement JWTSubject → memberi tahu JWT cara mengambil identifier user.
  • getJWTIdentifier() → mengembalikan primary key user (id).
  • getJWTCustomClaims() → untuk menambahkan klaim khusus (opsional).

Langkah 5: Konfigurasi Auth Guard untuk API

5 Kita perlu mengatur Laravel agar menggunakan guard api dengan driver jwt. Buka config/auth.php. Cari bagian guards dan ubah guard api menjadi:

'guards' => [ 'web' => [ 'driver' => 'session', 'provider' => 'users', ], 'api' => [ 'driver' => 'jwt', // ubah dari 'token' menjadi 'jwt' 'provider' => 'users', ], ],

Jika tidak ada guard api, tambahkan seperti di atas.

📌 Catatan: Pastikan provider users sudah benar (mengarah ke model User). Secara default sudah benar.

Langkah 6: Uji Konfigurasi (Opsional)

6 Untuk memastikan JWT sudah terkonfigurasi dengan benar, kita bisa menjalankan perintah:

php artisan tinker

Kemudian coba:

$user = App\Models\User::first(); $token = auth('api')->login($user); echo $token;

Jika muncul token string yang panjang, berarti konfigurasi berhasil! Keluar dengan exit.

💡 Tips: Jika error, pastikan sudah menjalankan php artisan migrate (tabel users sudah ada) dan setidaknya ada satu user di database.
🎯 JWT sudah siap digunakan! Selanjutnya kita akan membuat endpoint registrasi dan login yang mengembalikan token JWT, lalu melindungi endpoint CRUD siswa dengan middleware JWT.

Ringkasan Langkah

  • ✅ Install package: composer require tymon/jwt-auth
  • ✅ Publikasikan konfigurasi: php artisan vendor:publish --provider="Tymon\JWTAuth\Providers\LaravelServiceProvider"
  • ✅ Generate secret key: php artisan jwt:secret
  • ✅ Update model User dengan trait JWTSubject dan implement method.
  • ✅ Ubah guard api di config/auth.php menjadi driver jwt.
  • ✅ Uji dengan Tinker.

📌 Ingat: JWT_SECRET di file .env harus dijaga kerahasiaannya. Jangan commit ke repository publik!

(Link akan aktif saat artikel sebelumnya dan selanjutnya terbit)

📘 Laravel 12 CRUD (MySQL + JWT) • #8 Install dan Konfigurasi JWT (tymon/jwt-auth) • 🔐 JWT siap!
Lebih baru Lebih lama

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