
Pendahuluan
Pernah nggak kepikiran, kenapa Laravel terasa begitu fleksibel sampai-sampai kita bisa ngatur session user sesuka hati? Di project sistem informasi perbankan atau dashboard admin yang sensitif, client biasanya rewel banget soal keamanan, terutama soal user yang lupa logout setelah ninggalin laptop. Saya dulu sering banget dapet request 'tolong dong, user otomatis keluar kalau sudah 15 menit nggak ngapa-ngapain', dan setelah coba-coba, cara paling elegan memang pakai middleware custom daripada sekadar setting session di config.
Tips & Best Practices
- Di banyak project, biasanya saya mulai dari memisahkan logika pengecekan waktu agar tidak bercampur dengan middleware autentikasi bawaan Laravel, biar maintenance-nya lebih enak.
- Setiap kali handle session, saya selalu pastikan ngecek apakah user memang sedang login dulu, karena nge-cek session yang kosong berulang-ulang cuma bakal bikin resource server kebuang percuma.
- Kalau sistem butuh ketelitian tinggi, jangan lupa update timestamp terakhir di setiap request, biasanya saya taruh di base controller biar nggak usah manual satu per satu di tiap route.
Contoh Kode
Middleware ini bakal ngecek kapan terakhir user beraktivitas dibandingin sama waktu sekarang:
public function handle($request, Closure $next) { $lastActivity = session('last_activity'); if ($lastActivity && (time() - $lastActivity > 900)) { Auth::logout(); session()->forget('last_activity'); return redirect('/login')->with('error', 'Sesi anda telah berakhir.'); } session(['last_activity' => time()]); return $next($request); }Variasi Implementasi
Kita bisa pilih dua jalur. Jalur pertama pakai session file bawaan, yang simpel dan cocok buat aplikasi skala kecil. Jalur kedua, kalau user-nya jutaan, saya sarankan pakai Redis. Kenapa? Karena read/write session ke disk terus-menerus bisa bikin server I/O jadi botleneck. Pakai Redis jauh lebih ngebut buat nanganin expired session secara real-time.
Kesalahan Umum
- Lupa daftarin middleware di kernel, alhasil kodingan kita nggak pernah keeksekusi sama sekali.
- Set durasi terlalu pendek sampai user ngetik form pun sesi-nya udah keburu mati, ini bikin user frustrasi.
- Nge-logout paksa tanpa ngasih notifikasi, jadi user bingung pas tiba-tiba balik ke halaman login.
- Lupa nge-clear session lama saat logout, yang kadang bikin data sisa masih nyangkut.
- Terlalu bergantung pada client-side timer (JS) doang, padahal user yang nakal bisa matiin JS-nya dan bypass aturan main kita.
Ringkasan
Bikin auto logout itu bukan cuma soal ngapus session, tapi soal ngerti kenyamanan user sambil tetap ngejaga pintu masuk aplikasi kita tetep aman. Dengan custom middleware, kita punya kontrol penuh kapan dan gimana user harus dipaksa keluar. Intinya, selalu validasi di sisi server dan jangan pernah percaya sepenuhnya sama apa yang terjadi di browser.
Komentar
Posting Komentar