Tutorial Authentication dengan React.js & Laravel JWT #2 : Installasi dan Konfigurasi JWT (Json Web Token)


Tutorial Authentication dengan React.js & Laravel JWT #2 : Installasi dan Konfigurasi JWT (Json Web Token)

Halo teman-teman semuanya, di artikel sebelumnya kita telah belajar bagaimana cara membuat project baru di dalam Laravel dan juga membuat sebuah database. Di artikel kali ini kita semua akan belajar bagaimana cara melakukan proses installasi dan konfigurasi JWT atau Json Web Token di dalam project Laravel.

Apa itu JWT ?

JWT atau biasa disebut dengan Json Web Token merupakan perangkat lunak yang digunakan untuk membuat sebuah API token berbentuk JSON yang sudah di enksipsi dengan sebuah algoritma. Token yang di generate akan digunakan untuk bertukar informasi antar aplikasi dengan aman.

Langkah 1 - Installasi JWT di Laravel

Sekarang kita akan belajar bagaimana cara melakukan installasi dan konfigurasi JWT di dalam project Laravel. Sekarang, silahkan jalankan perintah berikut ini di dalam terminal/CMD dan pastikan berada di dalam project Laravel.

composer require tymon/jwt-auth:^1.0

Silahkan tunggu proses installasi sampai selesai dan pastikan teman-teman terhubung ke dalam internet.

Setelah proses installasi selesai, sekarang kita akan melakukan publish konfigurasi dari JWT, tujuannya agar kita bisa menyesuaikan beberapa konfig dengan lebih mudah. 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 di dalam config/jwt.php. Dimana di dalam file tersebut kita bisa melakukan beberapa perubahan, misalnya ingin merubah lifetime token JWT 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

Setelah berhasil melakukan installasi JWT, sekarang kita akan lanjutkan belajar untuk membuat sebuah guard baru di dalam Laravel untuk 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' => [						//<-- guard "api"
        'driver' => 'jwt',			//<-- driver "jwt"
        'provider' => 'users',
    ],
],

Di atas, kita membuat sebuah guard baru dengan nama api, dimana di dalamnya untuk driver yang digunakan adalah JWT.

Langkah 3 - Konfigurasi Model User

Terakhir, kita akan lanjutkan untuk melakukan penambahakan kode di dalam model User. Silahkan buka file app/Models/User.php, kemufian ubah semua kode-nya menjadi seperti berikut ini :

<?php

namespace App\Models;

use Tymon\JWTAuth\Contracts\JWTSubject;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Laravel\Sanctum\HasApiTokens;

class User extends Authenticatable implements JWTSubject
{
    use HasApiTokens, HasFactory, Notifiable;

    /**
     * The attributes that are mass assignable.
     *
     * @var string[]
     */
    protected $fillable = [
        'name',
        'email',
        'password',
    ];

    /**
     * The attributes that should be hidden for serialization.
     *
     * @var array
     */
    protected $hidden = [
        'password',
        'remember_token',
    ];

    /**
     * The attributes that should be cast.
     *
     * @var array
     */
    protected $casts = [
        'email_verified_at' => 'datetime',
    ];

    /**
     * getJWTIdentifier
     *
     * @return void
     */
    public function getJWTIdentifier()
    {
        return $this->getKey();
    }
        
    /**
     * getJWTCustomClaims
     *
     * @return void
     */
    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.

/**
* getJWTIdentifier
*
* @return void
*/
public function getJWTIdentifier()
{
  return $this->getKey();
}

**
* getJWTCustomClaims
*
* @return void
*/
public function getJWTCustomClaims()
{
  return [];
}

Dan sekarang, kita sudah bisa menggunakan JWT di dalam project Laravel. Di artikel selanjutnya kita semua akan belajar bagaimana cara membuat sebuah RESTful API untuk proses otentikasi, dimana di dalam proses otentikasi tersebut akan melakukan generate token JWT.

Terima Kasih



Fika Ridaul Maulayya
Full-Stack Developer, Content Creator and CO-Founder SantriKoding.com

Suka dengan tulisan di SantriKoding? Kamu bisa memberikan dukungan dengan berdonasi atau bagikan konten ini di sosial media. Terima kasih atas dukungan Anda!

KEBIJAKAN KOMENTAR

Saat memberikan komenatar silahkan memberikan informasi lengkap tentang error, seperti: screenshot, link kode, dll. Baca aturan komentar kami