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