Implementasi Logout Otomatis Menggunakan Middleware Session di Laravel Breeze

Oleh ADELYA ROSMARLINA HARYANI di 24 Sep 2025 | 21:35
ADELYA ROSMARLINA HARYANI

ADELYA ROSMARLINA HARYANI

Siswa
Postingan: 1
Suka: 2
Anggota sejak: 22 Agt 2025

Mengatur Session Timeout:

1)     Ubah SESSION_LIFETIME pada session.php sesuai kebutuhan. Misalnya, 10 menit idle otomatis logout:

2)     Ubah SESSION_LIFETIME .env menjadi 10 (600 detik)


Membuat middleware sessiontimout:

Untuk menambahkan fitur logout otomatis, dibuat middleware baru bernama SessionTimeout di folder app/Http/Middleware. Middleware ini memeriksa apakah user masih login dengan Auth::check()Jika ya, maka dicek kapan terakhir kali user beraktivitas melalui lastActivityTime yang disimpan di session. Apabila selisih waktunya lebih dari 10 menit (600 detik), user secara otomatis dikeluarkan dengan perintah Auth::logout()session dihapus, token CSRF diperbarui, dan user dikembalikan ke halaman login dengan pesan kesalahan bahwa sesi telah berakhir. Jika belum lewat 10 menit, maka middleware memperbarui nilai lastActivityTime sehingga sistem tahu kapan aktivitas terakhir dilakukan.



 


Menambahkan alias di middleware:

Agar middleware ini bisa digunakan, perlu didaftarkan alias-nya di file bootstrap/app.php. Dengan cara ini, middleware dapat dipanggil di routing dengan nama alias session.timeout.



 


Menerapkan middleware di routes/web.php:

Selanjutnya, di file routes/web.php, route untuk dashboard dilindungi dengan middleware auth dan session.timeout, sehingga user hanya bisa mengakses dashboard jika login, dan otomatis logout jika tidak aktif lebih dari 10 menit. 



 


Hasil setelah 10 menit:

Setelah middleware SessionTimeout diaktifkan, perilaku sistem akan berubah ketika user tidak melakukan aktivitas dalam jangka waktu tertentu, misalnya lebih dari 10 menit. Pada saat user pertama kali login, session akan dibuat dan middleware menyimpan waktu terakhir aktivitas ke dalam lastActivityTime. Selama user terus melakukan interaksi dengan aplikasi, nilai lastActivityTime akan diperbarui, sehingga session tetap dianggap aktif.

Namun, jika user diam saja tanpa aktivitas (idle) lebih dari 10 menit, maka ketika user mencoba mengakses kembali halaman yang dilindungi middleware (seperti /dashboard), sistem akan mendeteksi bahwa waktu idle sudah melebihi batas. Middleware SessionTimeout kemudian mengeksekusi proses logout otomatis dengan cara menghapus session (invalidate), mengganti token CSRF (regenerateToken), dan memanggil Auth::logout() agar status login dihapus.

Akibatnya, user langsung diarahkan kembali ke halaman login (/login) dengan pesan error yang menjelaskan bahwa sesi telah berakhir karena tidak ada aktivitas. Dengan mekanisme ini, aplikasi menjadi lebih aman karena mencegah user yang meninggalkan aplikasinya dalam keadaan login tetap memiliki akses tanpa disadari, misalnya saat menggunakan komputer bersama.


   



24 Sep 2025 | 21:35
2 Suka

Laporkan

Silakan jelaskan laporan secara singkat dan jelas.