Tutorial Laravel JWT #6 : Membuat RESTful API Logout


Tutorial Laravel JWT #6 : Membuat RESTful API Logout

Halo teman-teman semuanya, setelah sebelumnya kita berhasil belajar bagaiamana cara membuat proses login dan get user menggunakan JWT atau JSON Web Token, maka pada artikel kali ini kita akan belajar membuat proses logout dari user yang sedang login.

Langkah 1 - Menambahkan Blacklist Exception di Env

Pertama, silahkan tambahkan kode berikut ini di dalam file .env.

JWT_SHOW_BLACKLIST_EXCEPTION=true

Langkah 2 - Membuat Controller Logout

Silahkan jalankan perintah berikut ini di dalam terminal/CMD dan pastikan berada di dalam project Laravel-nya.

php artisan make:controller Api/LogoutController -i

Jika berhasil, maka kita akan dibuatkan 1 file controller baru dengan nama LogoutController.php yang berada di dalam folder app/Http/Controllers/Api.

Silahkan buka file tersebut dan ubah semua kode-nya menjadi seperti berikut ini.

<?php

namespace App\Http\Controllers\Api;

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Tymon\JWTAuth\Facades\JWTAuth;
use Tymon\JWTAuth\Exceptions\JWTException;
use Tymon\JWTAuth\Exceptions\TokenExpiredException;
use Tymon\JWTAuth\Exceptions\TokenInvalidException;

class LogoutController extends Controller
{
    /**
     * Handle the incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function __invoke(Request $request)
    {        
        //remove token
        $removeToken = JWTAuth::invalidate(JWTAuth::getToken());

        if($removeToken) {
            //return response JSON
            return response()->json([
                'success' => true,
                'message' => 'Logout Berhasil!',  
            ]);
        }
    }
}

Di atas, kita membuat kondisi di dalam method __invoke, dimana kita membuat sebuah variable dengan nama removeToken yang isinya adalah kita melakukan logout dari token yang active. Jika proses tersebut berhasil, maka akan mengembalikan sebuah response success true.

Langkah 3 - Menambahkan Route Logout

Sekarang, kita akan menambahkan route untuk proses logout. Silahkan buka file routes/api.php, kemudian ubah semua kode-nya menjadi seperti berikut ini :

<?php

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;

/**
 * route "/register"
 * @method "POST"
 */
Route::post('/register', App\Http\Controllers\Api\RegisterController::class)->name('register');

/**
 * route "/login"
 * @method "POST"
 */
Route::post('/login', App\Http\Controllers\Api\LoginController::class)->name('login');

/**
 * route "/user"
 * @method "GET"
 */
Route::middleware('auth:api')->get('/user', function (Request $request) {
    return $request->user();
});

/**
 * route "/logout"
 * @method "POST"
 */
Route::post('/logout', App\Http\Controllers\Api\LogoutController::class)->name('logout');

Di atas, kita menambahkan 1 route baru dengan path /logout dengan method POST.

Langkah 4 - Uji Coba API Logout

Silahkan buka aplikasi Postman dan masukkan URL berikut ini : http://localhost:8000/api/logout dan untuk method-nya silahkan pilih POST.

Setelah itu, silahkan klik tab Header. Kemudian masukkan beberapa key dan value berikut ini :

KEY VALUE
Accept application/json
Content-Type application/json
Authorization Bearer <spasi> Token

Jika sudah, silahkan klik Send, jika berhasil maka kita akan mendapatkan hasil seperti berikut ini :

{
    "success": true,
    "message": "Logout Berhasil!"
}

Sampai disini pembahasan bagaimana cara melakukan proses logout dengan cara mengahpus token JWT di dalam server. Jika teman-teman mengalami kendala atau error saat praktek silahkan bisa bertanya melalui kolom komentar atau group telegram SantriKoding.

SOURCE CODE : https://github.com/SantriKoding-com/Laravel-11-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