
Pendahuluan
Bayangin lagi ngerjain fitur sederhana, tapi kebingungan milih cara paling efisien buat nge-handle login user di API tanpa harus ribet sama konfigurasi OAuth yang kompleks. Laravel Sanctum itu jawaban yang sering banget saya pakai pas project butuh ringan, aman, dan langsung jalan. Kebanyakan dari kita sering terjebak di kerumitan implementasi session atau token manual yang sebenernya udah disediain solusinya secara elegan sama Sanctum.
Tips & Best Practices
Di banyak project, biasanya saya mulai dari memisahkan route API dengan route web agar token handling nggak tercampur sama session biasa. Kedua, saya selalu biasakan pakai Abilities buat ngebatesin apa yang boleh diakses user setelah login, jadi nggak semua endpoint bisa diakses admin user biasa. Ketiga, jangan pernah lupa buat nge-set token expiration di config agar aplikasi kita punya lapis keamanan tambahan kalau sewaktu-waktu ada token yang bocor.
Contoh Kode
Saat user mau login dan butuh token, biasanya saya pakai logic seperti ini di controller:
public function login(Request $request) {
$user = User::where('email', $request->email)->first();
if (!$user || !Hash::check($request->password, $user->password)) {
return response()->json(['message' => 'Credentials salah'], 401);
}
$token = $user->createToken('my-app-token')->plainTextToken;
return response()->json(['token' => $token]);
}Variasi Implementasi
Kalau aplikasinya cuma buat SPA (Single Page Application), kamu bisa pakai Sanctum via Stateful Authentication dengan cookie, ini lebih gampang karena user nggak perlu ribet ngirim header Authorization. Tapi kalau project-nya buat Mobile App atau integrasi pihak ketiga, pendekatan API Token jauh lebih masuk akal dan fleksibel buat di-manage lewat database.
Kesalahan Umum
- Lupa nambahin trait
HasApiTokensdi model User, alhasil method token jadi error. - Taruh route yang butuh proteksi di dalam file
routes/web.phppadahal harusnya diroutes/api.php. - Gagal nge-handle response error saat token kadaluwarsa, user jadi bingung kenapa datanya nggak muncul.
- Simpen token di
localStoragebrowser tanpa pertimbangan risiko XSS yang sebenernya bisa dihindari. - Terlalu banyak ngasih abilities ke user padahal mereka cuma butuh akses read-only.
Ringkasan
Sejujurnya, pakai Sanctum itu bikin hidup developer jauh lebih tenang karena kita nggak perlu reinvent the wheel tiap kali bangun API. Kuncinya ada di pemahaman kapan harus pakai session dan kapan harus pakai token. Begitu flow-nya dapet, sisanya tinggal fokus ke logic bisnis aplikasi kamu. Selamat ngoding!
Komentar
Posting Komentar