Halo teman-teman semuanya, pada artikel sebelumnya kita telah belajar bagaimana cara membuat project Laravel. Sekarang kita akan lanjutkan belajar bagaimana cara installasi dan konfigurasi JWT di dalam Laravel.
Langkah 1 - Install JWT di Laravel
Silahkan jalankan perintah berikut ini di dalam terminal/CMD dan pastikan sudah berada di dalam project Laravel-nya.
composer require tymon/jwt-auth:2.1.1
Silahkan tunggu proses installasi sampai selesai dan pastikan teman-teman terhubung ke dalam internet.
Setelah berhasil menginstall JWT, maka sekarang kita akan lanjutkan melakukan publish konfigurasi file. Silahkan jalankan perintah berikut ini di dalam terminal/CMD :
php artisan vendor:publish --provider="Tymon\JWTAuth\Providers\LaravelServiceProvider"
Jika perintah di atas berhasil dijalankan, maka kita akan mendapatkan 1 file baru, yaitu config/jwt.php
. Di dalam file ini kita bisa melakukan kustom jika memang dibutuhkan. Seperti mengubah waktu expired token, jenis algoritma dan lain-lain.
Setelah itu, jalankan perintah berikut ini di dalam terminal/CMD untuk membuat sebuah screet key JWT :
php artisan jwt:secret
Jika perintah di atas berhasil dijalankan, maka di dalam file .env
kita akan mendapatkan hasil seperti berikut ini :
JWT_SECRET=random_screet_key_jwt
Langkah 2 - Konfigurasi Guard API
Sekarang kita akan lanjutkan untuk melakukan konfigurasi guard API. Silahkan buka file config/auth.php
, kemudian cari kode berikut ini.
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
],
Kemudian ubah menjadi seperti berikut ini :
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'jwt',
'provider' => 'users',
],
],
Di atas, kita menambahkan guard baru dengan nama api
dan di dalamnya kita tambahkan driver
dengan value jwt
dan untuk provider
yang digunakan adalah users
.
Langkah 3 - Konfigurasi Model User
Terakhir, kita akan melakukan sedikit penambahan kode di dalam Model User
dengan menambahkan method. Silahkan buka file app/Models/user.php
, kemudian ubah semua kode-nya menjadi seperti berikut ini.
<?php
namespace App\Models;
// use Illuminate\Contracts\Auth\MustVerifyEmail;
use Tymon\JWTAuth\Contracts\JWTSubject;
use Illuminate\Notifications\Notifiable;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable implements JWTSubject
{
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 attributes that should be cast.
*
* @return array<string, string>
*/
protected function casts(): array
{
return [
'email_verified_at' => 'datetime',
'password' => 'hashed',
];
}
/**
* Get the identifier that will be stored in the subject claim of the JWT.
*
* @return mixed
*/
public function getJWTIdentifier()
{
return $this->getKey();
}
/**
* Return a key value array, containing any custom claims to be added to the JWT.
*
* @return array
*/
public function getJWTCustomClaims()
{
return [];
}
}
Dari perubahan kode di dalam model User
, pertama kita import sebuah Interface dari JWT.
use Tymon\JWTAuth\Contracts\JWTSubject;
Setelah itu, kita implement class User
dengan JWTSubject
.
class User extends Authenticatable implements JWTSubject //<-- implements JWTSubject
{
//...
Dan terakhir, kita menambahkan 2 method di dalam class User
, yaitu getJWTIdentifier
dan getJWTCustomClaims
.
/**
* Get the identifier that will be stored in the subject claim of the JWT.
*
* @return mixed
*/
public function getJWTIdentifier()
{
return $this->getKey();
}
/**
* Return a key value array, containing any custom claims to be added to the JWT.
*
* @return array
*/
public function getJWTCustomClaims()
{
return [];
}
Kurang lebih seperti itu bagaimana cara installasi dan konfigurasi JWT atau JSON Web Token di dalam Laravel. Di artikel selanjutnya kita akan belajar bagaimana cara membuat RESTful API untuk proses register daan login.
Terima Kasih