BELAJAR LARAVEL API DASAR

Day 5 β€” Autentikasi API Menggunakan Laravel Sanctum

Kamu akan mempelajari cara membuat sistem login dan register berbasis API, serta mengamankan endpoint dengan Laravel Sanctum.

Author Avatar

Rizky Fauzi

Mentor Kompak Akademi

06 Oct 2025
5 menit membaca
Generative AI Illustration

Halo teman-teman πŸ‘‹
Selamat datang kembali di series Belajar Laravel API by Kompak Akademi.
Kalau kamu udah sampai di artikel ke-5 ini, artinya kamu udah mulai serius belajar bikin API yang beneran bisa dipakai di dunia nyata. πŸ”₯

Hari ini kita akan bahas sesuatu yang krusial bange t: autentikasi API β€” biar user yang login aja yang bisa mengakses data tertentu.

Yup, kita akan belajar :

  • Apa itu autentikasi dan kenapa API butuh sistem login.
  • Cara kerja Laravel Sanctum untuk mengamankan API.
  • Gimana cara membuat token untuk user.
  • Cara mengakses endpoint yang dilindungi (pakai token).
  • Dan terakhir, bikin logout API juga biar lengkap.

Apa Itu Autentikasi di API?

Bayangin kamu punya aplikasi Todo App. Semua user bisa daftar dan bikin daftar tugasnya masing-masing. Nah, kamu tentu gak mau data tugas milik user A bisa diintip atau diubah oleh user B, kan?

Di sinilah autentikasi API berperan.
Autentikasi itu kayak sistem penjaga pintu β€” memastikan setiap request yang datang benar-benar berasal dari user yang sah.

Laravel menyediakan dua mekanisme populer :

  1. Passport β€” cocok untuk sistem besar atau multi-platform.
  2. Sanctum β€” lebih ringan, ideal buat single-page app, mobile app, dan API personal.

Kita akan pakai Sanctum karena ringan, mudah, dan powerful. πŸ’ͺ


Langkah 1 β€” Instalasi Laravel Sanctum

Pertama, pastikan kamu udah punya project Laravel yang aktif.
Lalu jalankan perintah berikut di terminal :

composer require laravel/sanctum

Setelah proses selesai, jalankan migrasi bawaan Sanctum :

php artisan migrate

Lalu aktifkan middleware Sanctum di file app/Http/Kernel.php.
Biasanya, Laravel sudah otomatis mengatur bagian ini, tapi pastikan kamu punya baris berikut di middleware group api :

'api' => [
    \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class,
    'throttle:api',
    \Illuminate\Routing\Middleware\SubstituteBindings::class,
],

Terakhir, buka model User.php dan tambahkan trait HasApiTokens :

use Laravel\Sanctum\HasApiTokens;

class User extends Authenticatable
{
    use HasApiTokens, HasFactory, Notifiable;
}

Sekarang Laravel-mu sudah siap menggunakan token API! πŸŽ‰


Langkah 2 β€” Membuat Endpoint Register dan Login

Sekarang, kita buat dua route baru : register dan login.
Buka file routes/api.php dan tambahkan :

use App\Http\Controllers\Api\AuthController;

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

Lalu buat controllernya :

php artisan make:controller Api/AuthController

Buka file app/Http/Controllers/Api/AuthController.php dan isi dengan :

<?php

namespace App\Http\Controllers\Api;

use App\Http\Controllers\Controller;
use App\Models\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Hash;

class AuthController extends Controller
{
    public function register(Request $request)
    {
        $validated = $request->validate([
            'name' => 'required|string|max:255',
            'email' => 'required|email|unique:users,email',
            'password' => 'required|min:6',
        ]);

        $user = User::create([
            'name' => $validated['name'],
            'email' => $validated['email'],
            'password' => Hash::make($validated['password']),
        ]);

        $token = $user->createToken('auth_token')->plainTextToken;

        return response()->json([
            'success' => true,
            'message' => 'Registrasi berhasil',
            'token' => $token,
            'user' => $user
        ], 201);
    }

    public function login(Request $request)
    {
        $user = User::where('email', $request->email)->first();

        if (! $user || ! Hash::check($request->password, $user->password)) {
            return response()->json([
                'success' => false,
                'message' => 'Email atau password salah'
            ], 401);
        }

        $token = $user->createToken('auth_token')->plainTextToken;

        return response()->json([
            'success' => true,
            'message' => 'Login berhasil',
            'token' => $token,
            'user' => $user
        ]);
    }
}

Sekarang kamu udah bisa coba register dan login via Postman.

  • Method : POST
  • URL : http://127.0.0.1:8000/api/register
  • Body (JSON) :
{
  "name": "Syafiq Rizky",
  "email": "syafiq@example.com",
  "password": "password123"
}

Kalau berhasil, kamu bakal dapat response seperti ini πŸ‘‡

{
  "success": true,
  "message": "Registrasi berhasil",
  "token": "1|6TsKZQFf...",
  "user": {
    "id": 1,
    "name": "Syafiq Rizky",
    "email": "syafiq@example.com"
  }
}

Token inilah yang nanti akan kamu pakai buat mengakses endpoint yang dilindungi. πŸ”


Langkah 3 β€” Membuat Endpoint Terproteksi

Sekarang kita buat contoh endpoint yang hanya bisa diakses kalau user sudah login.

Tambahkan route ini di api.php :

Route::middleware('auth:sanctum')->get('/profile', function (Request $request) {
    return response()->json([
        'success' => true,
        'data' => $request->user()
    ]);
});

Coba akses http://127.0.0.1:8000/api/profile di Postman tanpa token β€” hasilnya pasti Unauthorized (401).
Sekarang tambahkan token dari hasil login ke bagian Authorization β†’ Bearer Token, lalu klik Send.

Kalau berhasil, kamu bakal dapat data profil user kamu 🎯

{
  "success": true,
  "data": {
    "id": 1,
    "name": "Syafiq Rizky",
    "email": "syafiq@example.com"
  }
}

Langkah 4 β€” Logout API

Supaya lengkap, kita tambahkan juga endpoint logout :

Route::middleware('auth:sanctum')->post('/logout', [AuthController::class, 'logout']);

Lalu tambahkan fungsi di AuthController :

public function logout(Request $request)
{
    $request->user()->tokens()->delete();

    return response()->json([
        'success' => true,
        'message' => 'Logout berhasil, token dihapus'
    ]);
}

Sekarang, setiap kali user logout, tokennya langsung hangus β€” jadi aman banget πŸ”₯


Kesimpulan

Hari ini kamu sudah belajar hal besar :

βœ… Instalasi dan konfigurasi Laravel Sanctum.
βœ… Membuat API register dan login.
βœ… Menghasilkan token autentikasi untuk user.
βœ… Mengakses endpoint dengan proteksi auth:sanctum.
βœ… Dan logout dengan menghapus token.

Dengan Sanctum, API kamu kini punya sistem login seperti aplikasi profesional.
Besok kita akan lanjut ke topik yang makin keren lagi β€” menyimpan dan mengelola data di database lewat API CRUD lengkap. πŸš€

Sampai jumpa di artikel selanjut nya πŸ‘‹

Kalau ada pertanyaan silahkan bisa join ke komunitas kita baik di discord ataupun di telegram group :

β€œSecurity isn’t about paranoia, it’s about respect β€” respect untuk data user, dan respect untuk kode yang kamu tulis.”

Rizky Fauzi

Tentang Penulis

Rizky Fauzi

Mentor Kompak Akademi

Baca artikel kami yang lainnya

Day 2 β€” Membuat Route, Controller, dan Response JSON
Belajar Laravel API dasar

Day 2 β€” Membuat Route, Controller, dan Response JSON

Belajar membuat endpoint pertama di Laravel menggunakan Route dan Controller, serta mengembalikan data dalam format JSON yang bisa diakses oleh aplikasi lain

5 menit baca
06 Oct 2025
Day 3 β€” CRUD API: Create, Read, Update, Delete dengan Laravel
Belajar Laravel API dasar

Day 3 β€” CRUD API: Create, Read, Update, Delete dengan Laravel

Membangun API CRUD lengkap menggunakan Laravel, mulai dari membuat data baru hingga menghapus data, dengan pengujian sederhana menggunakan Postman.

5 menit baca
06 Oct 2025
Day 4 β€” Menggunakan Resource &amp; Resource Collection untuk Format Data API
Belajar Laravel API dasar

Day 4 β€” Menggunakan Resource &amp; Resource Collection untuk Format Data API

Pelajari cara membuat format data API lebih rapi dan konsisten menggunakan Laravel API Resource agar mudah dikelola dan aman digunakan.

5 menit baca
06 Oct 2025

Ingin Belajar Lebih Dalam tentang AI?

Daftar kursus kami dan mulai perjalanan Anda menuju karir di bidang AI