Langsung ke konten utama

Panduan Praktis Implementasi Laravel Sanctum untuk Autentikasi API

Pendahuluan

Bayangin lagi ngerjain fitur sederhana, tapi tiba-tiba harus pusing mikirin cara jaga API biar nggak bisa diakses sembarangan orang. Laravel Sanctum datang sebagai penyelamat karena kita nggak perlu ribet setting OAuth2 yang berat cuma buat aplikasi SPA atau mobile sederhana. Saya sendiri sering pakai ini karena setup-nya cepat, clean, dan langsung bisa integrasi sama sistem authentikasi bawaan Laravel.

Tips & Best Practices

Di banyak project, biasanya saya selalu mulai dari membatasi akses via middleware 'auth:sanctum' langsung di route group agar nggak ada end-point yang terlupa diproteksi. Kedua, saat handle token, pastikan untuk selalu memberi nama token yang spesifik sesuai device-nya supaya user bisa revoke akses spesifik kalau hp-nya hilang. Terakhir, jangan pernah simpan plain token di database; manfaatkan sistem hashing bawaan Sanctum agar data user tetap aman kalau misal database bocor.

Contoh Kode

Biasanya saat user login, kita buat token seperti ini agar client bisa pakai aksesnya buat request berikutnya:

public function login(Request $request) {
    $user = User::where('email', $request->email)->first();
    if ($user && Hash::check($request->password, $user->password)) {
        $token = $user->createToken('auth_token')->plainTextToken;
        return response()->json(['token' => $token]);
    }
}

Variasi Implementasi

Ada dua jalur yang sering saya ambil. Kalau aplikasinya SPA (seperti Vue/React di subdomain yang sama), saya lebih pilih 'Stateful Authentication' karena nggak perlu handle token di header manual—cukup pakai cookie bawaan. Tapi kalau buat mobile app atau API yang konsumsi pihak ketiga, ya mau nggak mau harus pakai 'Token Authentication' supaya bisa ditempel di header Authorization.

Kesalahan Umum

Sering banget saya lihat beberapa hal ini bikin aplikasi jadi nggak aman: 1. Lupa revoke token lama saat user logout; 2. Terlalu banyak kasih izin (abilities) ke token padahal cuma butuh akses baca; 3. Nggak pernah set expiry token yang bikin sistem rentan kalau token dicuri; 4. Hardcoding secret key di file config yang harusnya masuk ke .env; 5. Pakai API untuk proses yang sebenarnya harusnya ada di sisi backend (seperti hit API pihak ketiga yang rahasia).

Ringkasan

Sanctum itu bukan sekadar tools, tapi cara kita bikin hidup lebih tenang pas nge-deploy API. Kuncinya bukan cuma soal kodenya jalan, tapi gimana kita konsisten jaga akses token itu sendiri. Habis ini, coba cek lagi project kamu, apakah sudah menerapkan best practice tadi, atau masih ada celah yang bikin was-was?

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?