Tutorial Laravel 13 REST API Authentication #6 – Logout API dengan Sanctum

Panduan lengkap membuat REST API authentication di Laravel 13. Dalam tutorial ini, teman-teman akan belajar membuat fitur register, login, logout, dan mendapatkan informasi user yang sedang login menggunakan API, lengkap dengan validasi dan penanganan error. Cocok untuk pemula yang ingin memahami autentikasi berbasis API di Laravel.

✅ Telah dilihat 234 kali

Rating: 5.00 ⭐

... 18 March 2026, 10:41

Function Logout

Fungsi ini bertujuan untuk menghapus semua token yang terkait dengan user yang sedang login. Dengan demikian, saat mencoba mengakses rute yang dilindungi oleh middleware Sanctum, maka pengguna akan dianggap unauthenticated. Tambahkan fungsi berikut ke dalam AuthController:

public function logout(Request $request)
    {
        // Ambil pengguna yang sedang login
        $user = Auth::user();

        // Periksa apakah pengguna memiliki token
        if ($user->tokens->isEmpty()) {
            return response()->json([
                'success' => false,
                'message' => 'No active tokens found for this user.',
            ], 404);
        }

        // Hapus semua token yang terkait dengan pengguna
        $user->tokens->each(function ($token) {
            $token->delete();
        });

        // Kirim respons sukses
        return response()->json([
            'success' => true,
            'message' => 'Successfully logged out.',
        ], 200);
    }

1. Deklarasi Fungsi

public function logout(Request $request)
  • Method logout bersifat publik pada controller.
  • Parameter $request adalah objek Illuminate\Http\Request, berisi informasi request dari client.
  • Fungsi ini digunakan untuk menghapus token API user sehingga mereka tidak bisa lagi melakukan request yang membutuhkan autentikasi.

2. Ambil User yang Sedang Login

$user = Auth::user();
  • Auth::user() mengembalikan user yang sedang terautentikasi berdasarkan token atau session yang dipakai.
  • $user sekarang berisi instance model User yang login.

3. Cek Token yang Aktif

if ($user->tokens->isEmpty()) {
    return response()->json([
        'success' => false,
        'message' => 'No active tokens found for this user.',
    ], 404);
}
  • $user->tokens → relasi ke token API (Laravel Sanctum).
  • isEmpty() → mengecek apakah user tidak memiliki token aktif.
  • Jika kosong → kembalikan response JSON 404 Not Found, karena tidak ada token yang bisa dihapus.
  • Struktur JSON:
    • success: false → logout gagal.
    • message → informasi error.

4. Hapus Semua Token

$user->tokens->each(function ($token) {
    $token->delete();
});
  • $user->tokens->each(...) → iterasi semua token yang terkait dengan user.
  • $token->delete() → menghapus token dari database.
  • Setelah ini, user tidak lagi bisa menggunakan token lama untuk mengakses API, artinya logout berhasil.

5. Kirim Respons Sukses

return response()->json([
    'success' => true,
    'message' => 'Successfully logged out.',
], 200);
  • Mengirim JSON response ke client:
    • success: true → menandakan logout berhasil.
    • message → pesan sukses.
  • Status HTTP 200 OK → request berhasil.

Ringkasan Alur Logout

  1. Ambil user yang sedang login.
  2. Periksa apakah user punya token aktif.
    • Jika tidak ada → kirim 404.
  3. Hapus semua token aktif user.
  4. Kirim response sukses.

Pada kode diatas terdapat kondisi, jika tidak ada token aktif, maka function logout akan menampilkan pesan response No active tokens found for this user dengan status code 404. Apabila terdapat token aktif yang ditemukan maka akan muncul status code 200 dengan response Successfully logged out. Dengan kondisi ini, pengguna akan mendapatkan pesan yang lebih informatif jika mereka mencoba logout tanpa memiliki token aktif.

Konfigurasi Rute Logout

Silakan buka file rute yakni api.php, kemudian ubah menjadi seperti berikut ini:

<?php

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\Api\AuthController;

Route::middleware('auth:sanctum')->group(function () {
    Route::get('/user', [AuthController::class, 'getUser']);
    Route::post('/logout', [AuthController::class, 'logout']);
});


Route::post('register', [AuthController::class, 'register']);

Test API

Endpoint Methode
http://127.0.0.1:8000/api/logout POST

Silakan buat request baru dengan nama request LogOut dengan menggunakan methode POST .

kemudian pada header silakan masukkan key dan value berikut ini:

Key Value
Accept application/json
Authorization Bearer (TOKEN YANG DIDAPAT SETELAH REGISTER)

Catatan:

  • Gantilah (TOKEN YANG DIDAPAT SETELAH REGISTER) dengan token autentikasi yang Anda terima saat proses register berhasil.

Lebih jelasnya bisa dilihat pada gambar berikut ini

Respon Ketika Tidak ada Token Aktif

Pada materi berikutnya, kita akan membuat satu fungsi lagi didalam AuthController, yakni fungsi Login.

Daftar eBook