Langsung ke konten utama

Memilih Laravel Sanctum vs Passport: Panduan Praktis untuk API

Pendahuluan

Pernah nggak kepikiran, kenapa Laravel punya dua sistem autentikasi API yang kayaknya tumpang tindih padahal sama-sama buat ngamanin request? Jujur, dulu saya sering bingung pas harus milih antara Sanctum atau Passport di project awal. Awalnya saya pikir makin kompleks sistemnya bakal makin aman, ternyata itu jebakan. Kadang kita cuma butuh token ringan buat SPA atau aplikasi mobile, tapi malah pasang 'tank' buat ngelindungin 'sepeda'. Di sini saya mau share sudut pandang kenapa nggak semua project butuh OAuth2 yang berat.

Tips & Best Practices

Di banyak project, biasanya saya mulai dari menanyakan kebutuhan klien soal integrasi pihak ketiga: apakah mereka perlu sistem OAuth2 server yang bisa dipakai aplikasi lain? Kalau cuma buat internal SPA (Vue/React) atau mobile app buatan kita sendiri, Sanctum sudah lebih dari cukup.

Pengalaman saya pas maintenance aplikasi skala menengah, pakai Sanctum jauh lebih enteng di database dibanding Passport yang naruh banyak tabel buat ngurusin token, client, dan grant types yang kadang nggak kepakai semua.

Kalau nanti tiba-tiba aplikasi berkembang jadi platform besar yang bakal punya API untuk developer luar (Third-party developer), barulah saya migrasi ke Passport. Jangan terjebak 'over-engineering' di hari pertama.

Contoh Kode

Buat yang pakai Sanctum, biasanya saya pasang di User model kayak gini biar gampang generate token pas user login di mobile app:

// User.php
use Laravel\Sanctum\HasApiTokens;

class User extends Authenticatable {
    use HasApiTokens, Notifiable;
}

Terus pas controller login:

$token = $user->createToken('nama-device')->plainTextToken;
return response()->json(['token' => $token]);

Ini jauh lebih simpel dibanding harus nge-hit endpoint Oauth yang butuh client_id dan client_secret buat dapet token.

Variasi Implementasi

Sanctum itu unik karena dia punya dual-mode. Kalau kita taruh di SPA yang satu domain, dia bisa pakai EnsureFrontendRequestsAreStateful middleware, jadi dia pakai session-based auth tanpa perlu ribet kirim token di header. Ini life-saver banget buat developer yang males ngurusin token expiration di client-side. Sebaliknya, Passport murni OAuth2 yang memaksa kita buat selalu kirim token di header Authorization (Bearer). Jadi pilihannya cuma satu: mau 'set-and-forget' pakai session atau mau 'strict' pakai standard OAuth2?

Kesalahan Umum

  • Memaksa pakai Passport padahal cuma buat autentikasi mobile app internal (boros resource).
  • Lupa nambahin middleware auth:sanctum di route API, akhirnya data publik semua.
  • Nggak baca dokumentasi kalau Sanctum itu sebenarnya dibangun di atas sistem session Laravel, jadi bisa dipake buat web-based auth juga.
  • Salah kaprah soal token lifetime; di Sanctum kita harus setting manual kalau mau expiry, sedangkan di Passport udah ada standarnya.
  • Terlalu takut migrasi; padahal kalau nanti butuh scale ke OAuth, ganti dari Sanctum ke Passport di Laravel itu lumayan smooth asal arsitekturnya rapi.

Ringkasan

Kesimpulannya, nggak ada yang lebih baik di antara keduanya, yang ada cuma 'mana yang paling pas sama workload saat ini'. Sanctum itu pilihan jujur buat 90% kasus project saya, sementara Passport itu pilihan bijak kalau kita udah mikirin ekosistem API pihak ketiga. Intinya, jangan biarkan kompleksitas tool mendikte simplisitas solusi yang kita buat.

Komentar

Postingan populer dari blog ini

Fungsi lain tombol penerima panggilan di headset

Kegunaan tombol yang berada di headset utamanya adalah untuk menerima panggilan dan pause panggilan. Dan headset itu sendiri, kadang juga digunakan untuk mendengarkan music, digunakan bersama saat main game, supaya suara yang dikeluarkan oleh gadget tidak terlalu keras sehingga mengurangi beban gadget. Dengan mengurangi beban gadget, ada beberapa yang beranggapan kalau itu akan menghemat batere.

Cara Reset Password Database MySQL Menggunakan Laragon

Cara Reset Password Database MySQL Menggunakan Laragon Laragon adalah salah satu lingkungan pengembangan lokal (local development environment) yang populer di antara para pengembang web. Dalam beberapa kasus, mungkin kita perlu mereset password database MySQL pada Laragon jika lupa password atau untuk alasan keamanan tertentu. Berikut adalah langkah-langkah yang dapat kita ikuti untuk melakukan reset password database MySQL menggunakan Laragon:

Apa Itu R dan L di Headset? Ini Dia Perbedaan dan Fungsinya yang Perlu Anda Ketahui

Arti R dan L di Headset: Apa Perbedaannya? Headset adalah alat yang digunakan untuk mendengarkan suara dari sumber audio seperti ponsel, komputer, atau pemutar musik. Headset biasanya terdiri dari dua bagian, yaitu earphone yang dimasukkan ke dalam telinga dan mikrofon yang digunakan untuk berbicara. Pada earphone, kita sering melihat ada tulisan R dan L. Apa arti dan perbedaan dari kedua huruf tersebut?