
Pendahuluan
Bayangin lagi ngerjain fitur sederhana, tapi tiba-tiba klien minta panel admin terpisah yang nggak bisa diakses user biasa, padahal database-nya cuma satu. Biasanya kita langsung pusing mikirin cara misahin session atau middleware, padahal Laravel punya cara yang cukup rapi kalau kita tahu triknya. Ini bukan soal nambahin tabel, tapi soal gimana kita ngatur 'pintu masuk' biar nggak ada tabrakan session antara akses admin dan member.
Tips & Best Practices
- Di banyak project, biasanya saya mulai dari bikin custom guard di
config/auth.phpbiar kita punya definisi provider yang jelas buat tiap role. - Pas lagi setup middleware, jangan lupa buat ngarahin request ke guard yang tepat supaya session nggak saling tumpang tindih.
- Kalau saya pribadi, selalu misahin file route
web.phpbuat user danadmin.phpbiar coding-an nggak numpuk dan gampang dilacak kalau ada bug.
Contoh Kode
Saat kita butuh proteksi khusus buat admin, biasanya saya pasang middleware ini di route grup biar makin aman:
// Di dalam routes/web.php
Route::middleware(['auth:admin'])->prefix('admin')->group(function () {
Route::get('/dashboard', [AdminController::class, 'index']);
});Dan jangan lupa, di model Admin, pastikan kita nge-extend Authenticatable supaya Laravel ngerti kalau class ini punya hak akses sistem.
Variasi Implementasi
Ada dua jalur yang sering saya ambil: pake table terpisah (Admin & User) atau pake satu table Users dengan kolom role. Kalau pakai dua table, memang lebih rapi buat manajemen akses, tapi kalau satu table, kita tinggal cek lewat Gate atau Policy. Biasanya saya pilih opsi table terpisah kalau project-nya bakal gede banget dan butuh fitur admin yang kompleks.
Kesalahan Umum
- Sering banget lupa nge-clear cache config, jadi konfigurasi guard baru nggak ke-load sama sistem.
- Lupa nambahin
auth:admindi middleware, akhirnya user biasa bisa masuk ke dashboard admin karena cuma dicek status login umum. - Hardcoding URL redirect di dalam controller, padahal pakai
route()jauh lebih aman kalau struktur URL berubah. - Terlalu banyak nge-copy paste logic auth tanpa paham alur session-nya, ujung-ujungnya session admin malah ke-replace session user.
- Nggak nge-handle 403 atau 401 secara proper, jadi user cuma dapet halaman putih pas salah akses.
Ringkasan
Jujur aja, multi-auth itu emang keliatan serem di awal, tapi kuncinya cuma di disiplin nge-manage guard dan route. Kalau dari awal udah rapi, ke depannya mau nambah fitur apa aja bakal jauh lebih gampang dan nggak bikin pusing di tengah jalan. Semangat ngoding-nya!
Komentar
Posting Komentar