laravel autentikasi API sanctum | java php laravel linux mysql sql bootstrap html css query java php laravel linux mysql sql bootstrap html css query: laravel autentikasi API sanctum

Sunday, April 12, 2026

laravel autentikasi API sanctum

🔐 Autentikasi ⚡ Laravel Sanctum 🚀 REST API 📘 Seri #41 dari 50

Autentikasi API dengan
Laravel Sanctum

Dari token sederhana hingga SPA authentication — kuasai cara mengamankan API Laravel kamu dengan package resmi yang powerful namun mudah dipahami.

⏱️
Estimasi Baca
12–15 Menit
🎯
Level
Intermediate
📅
Tahun
2025

Pernah nggak kamu bikin API yang bagus — endpoint-nya rapi, response-nya konsisten — tapi lupa mengamankannya? Seperti punya rumah mewah tapi pintu depannya dibiarkan terbuka 24 jam. Nah, di sinilah Autentikasi API Laravel Sanctum hadir sebagai solusi. Sanctum adalah package resmi Laravel yang dirancang khusus untuk mengautentikasi SPA (Single Page Application), aplikasi mobile, dan API berbasis token — tanpa kerumitan OAuth penuh seperti Passport.

Kalau kamu sudah mengikuti seri 50 Artikel Belajar Laravel sampai artikel ke-41 ini, berarti kamu sudah siap naik level. Kita sudah bahas API Resource di artikel sebelumnya — sekarang saatnya kita pastikan API itu hanya bisa diakses oleh yang berhak. Mari mulai!

🔑 Definisi Kunci

Laravel Sanctum adalah package autentikasi ringan yang menyediakan sistem token API sederhana dan autentikasi session berbasis cookie untuk SPA — tanpa perlu OAuth server yang kompleks.

Sanctum = Passport yang sudah "diet" — tetap powerful, tapi jauh lebih simpel untuk kasus umum.

Apa Itu Laravel Sanctum dan Kenapa Bukan Passport?

Bayangkan kamu mau masuk ke gedung kantor. Ada dua pilihan sistem keamanan: yang pertama, kamu harus melewati metal detector, pemindai retina, verifikasi dua langkah, dan tanda tangan digital (itu Laravel Passport + OAuth). Yang kedua, kamu cukup tunjukkan kartu akses yang sudah terdaftar — masuk deh (itu Laravel Sanctum).

Sanctum cocok untuk kasus:

Kebutuhan Sanctum ✅ Passport
API Token untuk mobile/SPA
OAuth2 Server lengkap (grant types)
Setup cepat (< 10 menit)
Token abilities/scopes
Cocok untuk project skala mahasiswa ✔ Banget! Overkill
🔥
Fakta Menarik

Laravel Sanctum sudah built-in di Laravel 8+ — kamu tidak perlu instalasi terpisah jika menggunakan versi terbaru. Di Laravel 11, Sanctum sudah menjadi bagian dari starter kit default!

Cara Install dan Konfigurasi Laravel Sanctum Step by Step

Oke, cukup teorinya. Sekarang kita langsung praktik. Berikut langkah-langkah lengkap untuk mengintegrasikan Autentikasi API Laravel Sanctum ke project kamu:

1

Install Package Sanctum

Untuk Laravel 10 ke bawah, jalankan perintah berikut di terminal:

// Terminal
composer require laravel/sanctum

php artisan vendor:publish --provider="Laravel\Sanctum\SanctumServiceProvider"

php artisan migrate
2

Tambahkan HasApiTokens pada Model User

Buka file app/Models/User.php dan tambahkan trait berikut:

use Laravel\Sanctum\HasApiTokens;

class User extends Authenticatable
{
  use HasApiTokens, HasFactory, Notifiable;
  // ... properti lainnya
}
3

Buat AuthController untuk Login & Register

Buat controller baru dan implementasikan method login yang menghasilkan token:

// php artisan make:controller API/AuthController

public function login(Request $request)
{
  $request->validate([
    'email' => 'required|email',
    'password' => 'required',
  ]);

  if (!Auth::attempt($request->only('email', 'password'))) {
    return response()->json(['message' => 'Unauthorized'], 401);
  }

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

  return response()->json([
    'token' => $token,
    'token_type' => 'Bearer',
  ]);
}
💡
Tips Pro

Berikan nama yang deskriptif pada token saat memanggil createToken() — misalnya 'mobile-app-ios' atau 'web-dashboard'. Ini memudahkan manajemen token per perangkat dan debugging di masa depan.

4

Daftarkan Route API dengan Middleware Sanctum

Buka routes/api.php dan proteksi route yang membutuhkan autentikasi:

// routes/api.php

// Route publik (tidak perlu token)
Route::post('/login', [AuthController::class, 'login']);
Route::post('/register', [AuthController::class, 'register']);

// Route yang memerlukan autentikasi Sanctum
Route::middleware('auth:sanctum')->group(function() {
  Route::get('/user', function(Request $request) {
    return $request->user();
  });
  Route::post('/logout', [AuthController::class, 'logout']);
  Route::apiResource('posts', PostController::class);
});
5

Implementasi Logout (Revoke Token)

Logout di Sanctum berarti menghapus token dari database — bukan sekadar session expire:

public function logout(Request $request)
{
  // Hapus token yang sedang digunakan
  $request->user()->currentAccessToken()->delete();

  // Atau hapus SEMUA token user (logout semua perangkat)
  // $request->user()->tokens()->delete();

  return response()->json(['message' => 'Logged out successfully']);
}
⚠️
Perhatian Penting

Pastikan APP_URL di file .env sudah diisi dengan benar. Untuk autentikasi SPA berbasis cookie, kamu juga perlu mengatur SANCTUM_STATEFUL_DOMAINS agar tidak terjadi CSRF error saat development.

Token Abilities: Kontrol Akses yang Lebih Granular dengan Sanctum

Salah satu fitur tersembunyi dari Autentikasi API Laravel Sanctum yang sering diabaikan adalah token abilities — semacam "izin khusus" yang bisa kamu lampirkan pada setiap token. Bayangkan ini seperti kunci multifungsi: satu kunci bisa hanya membuka ruang tamu, satu kunci lainnya bisa masuk ke semua ruangan.

⚡ Analisis: Implementasi Token Abilities
// Saat membuat token, tentukan abilities-nya
$token = $user->createToken('mobile-token', ['post:read', 'post:create'])->plainTextToken;

// Di Controller, cek apakah token memiliki ability tertentu
if ($request->user()->tokenCan('post:delete')) {
  // Hanya jalankan ini jika token punya izin delete
  $post->delete();
}

💡 Dengan pendekatan ini, kamu bisa membuat token untuk read-only access bagi aplikasi pihak ketiga, sementara admin app mendapat token dengan full access. Ini prinsip Principle of Least Privilege yang sangat baik untuk keamanan.

Untuk menguji API yang sudah kamu buat, gunakan Postman atau Insomnia. Setelah login berhasil dan mendapat token, tambahkan header berikut di setiap request ke endpoint yang dilindungi:

// Header Request di Postman/Insomnia
Authorization: Bearer {token_kamu_di_sini}
Accept: application/json
Content-Type: application/json
Insight Penting

Sanctum menyimpan token dalam bentuk hash SHA-256 di database, bukan plain text. Token yang dikembalikan ke user hanya muncul sekali saat pembuatan. Jika user lupa tokennya, satu-satunya solusi adalah buat token baru — ini adalah desain keamanan yang intentional.

Autentikasi API Laravel Sanctum: Cara Cek di Frontend (React/Vue)

Jika kamu membangun frontend dengan React atau Vue.js yang terpisah dari Laravel, cara paling simpel adalah menyimpan token di localStorage lalu kirim di setiap request. Berikut contoh dengan JavaScript fetch API:

// Login dan simpan token
const loginUser = async (email, password) => {
  const response = await fetch('https://api.kamu.com/api/login', {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({ email, password })
  });
  const data = await response.json();
  localStorage.setItem('token', data.token); // Simpan token
};

// Request ke protected endpoint
const getPosts = async () => {
  const token = localStorage.getItem('token');
  const response = await fetch('/api/posts', {
    headers: { 'Authorization': `Bearer ${token}` }
  });
  return response.json();
};
💡
Tips Keamanan Frontend

Untuk aplikasi yang lebih serius, pertimbangkan menyimpan token di httpOnly cookie daripada localStorage. Cookie yang httpOnly tidak bisa diakses JavaScript, sehingga terlindung dari serangan XSS. Di Laravel, ini bisa dilakukan dengan metode autentikasi SPA Sanctum menggunakan CSRF token + session cookie.

📋 Kesimpulan

Sanctum: Solusi Autentikasi API yang Tepat Sasaran

Setelah mengikuti panduan ini, kamu sudah memiliki semua yang dibutuhkan untuk membangun sistem autentikasi yang aman. Mari rekap poin pentingnya:

Laravel Sanctum adalah solusi autentikasi ringan yang ideal untuk API token dan SPA — lebih simpel dari Passport tanpa mengorbankan fitur penting.

Setup hanya butuh 5 langkah: install, tambahkan trait HasApiTokens, buat controller, daftarkan route, dan implementasi logout.

Token abilities memungkinkan kontrol akses granular — prinsip least privilege yang penting untuk keamanan API production.

Dengan memahami Autentikasi API Laravel Sanctum, kamu sudah siap membangun backend API yang aman untuk project skripsi, portfolio, maupun aplikasi production.

Artikel ini adalah bagian dari seri 50 Artikel Belajar Laravel — sebuah panduan terstruktur dari nol hingga mahir. Bookmark halaman ini dan bagikan ke teman-temanmu yang lagi belajar backend development! 🚀

#Laravel #PHP #Sanctum #API #Autentikasi #WebDevelopment #Tutorial #BelajarLaravel

No comments:

Post a Comment

saifiahmada.com adalah blog belajar programming Indonesia, membahas lengkap materi bahasa pemrograman: code HTML, CSS, Bootstrap, Desain, PHP, MySQL, coding Java, Query, SQL, dan dunia linux