HOTLINE

(0275) 2974 127

CHAT WA 24/7
0859-60000-390 (Sales)
0852-8969-9009 (Support)
Blog

Panduan Lengkap Menambahkan Session Timeout di Laravel

Laravel merupakan salah satu framework PHP yang populer karena kemudahan, keamanan, dan fleksibilitasnya. Salah satu fitur penting dalam pengelolaan aplikasi web adalah session, yang digunakan untuk menyimpan informasi sementara pengguna, seperti login, preferensi, dan data lainnya.

Namun, secara default, Laravel memiliki session timeout atau waktu habis sesi tertentu yang bisa membuat pengguna harus login ulang setelah beberapa saat. Pada artikel ini, kita akan membahas cara menambah session timeout pada Laravel agar sesi pengguna lebih lama.

1. Memahami Session Timeout di Laravel

Session timeout adalah batas waktu sesi aktif sebelum secara otomatis berakhir. Secara default, Laravel menggunakan driver session file dan waktu defaultnya diatur pada 120 menit (2 jam). Jika Anda ingin mengubahnya, ada beberapa pendekatan yang bisa dilakukan.

2. Mengubah Session Timeout melalui config/session.php

File konfigurasi session Laravel berada di config/session.php. Di dalamnya terdapat beberapa pengaturan penting, termasuk:

'lifetime' => env('SESSION_LIFETIME', 120),
'expire_on_close' => false,
  • lifetime: Mengatur durasi sesi dalam satuan menit.

  • expire_on_close: Jika diatur true, sesi akan berakhir saat browser ditutup.

Langkah-langkah untuk menambah session timeout:

  1. Buka file config/session.php.

  2. Temukan parameter lifetime.

  3. Ubah nilainya sesuai kebutuhan. Misalnya, untuk 8 jam:

'lifetime' => 480, // 8 jam
  1. Simpan perubahan.

Jika Anda menggunakan .env file, Anda juga bisa menambahkan:

SESSION_LIFETIME=480

Laravel akan membaca nilai ini saat bootstrap.

3. Memastikan expire_on_close Tidak Mengurangi Timeout

Jika Anda ingin session tetap aktif meskipun browser ditutup, pastikan expire_on_close diset ke false:

'expire_on_close' => false,

Ini akan membuat sesi tetap aktif selama durasi yang ditentukan di lifetime.

4. Menangani Session Timeout untuk User yang Login

Pada aplikasi yang menggunakan Laravel Auth, menambah session timeout juga berarti memperpanjang durasi login pengguna. Pastikan juga middleware autentikasi tetap memperhitungkan session timeout:

  • Laravel secara otomatis menggunakan session untuk autentikasi.

  • Perubahan di lifetime akan mempengaruhi login otomatis, sehingga pengguna tidak perlu login ulang terlalu sering.

5. Menggunakan Middleware untuk Kontrol Timeout Lebih Lanjut

Jika Anda ingin kontrol lebih spesifik terhadap session timeout, misalnya mengatur timeout berbeda berdasarkan role atau aktivitas pengguna, Anda bisa membuat middleware custom:

php artisan make:middleware SessionTimeout

Contoh isi middleware:

namespace App\Http\Middleware;

use Closure;
use Illuminate\Support\Facades\Session;
use Carbon\Carbon;

class SessionTimeout
{
protected $timeout = 480; // dalam menit

public function handle($request, Closure $next)
{
if (!Session::has('last_activity')) {
Session::put('last_activity', Carbon::now());
} elseif (Carbon::now()->diffInMinutes(Session::get('last_activity')) > $this->timeout) {
Session::flush();
return redirect()->route('login')->with('message', 'Session telah habis. Silakan login kembali.');
}

Session::put('last_activity', Carbon::now());

return $next($request);
}
}

Setelah itu, daftarkan middleware di app/Http/Kernel.php.

6. Cache Session untuk Performa Lebih Baik

Jika aplikasi Anda besar dan memiliki banyak pengguna, pertimbangkan menggunakan session driver selain file, seperti database atau Redis, untuk performa dan skalabilitas yang lebih baik. Pengaturan ini juga ada di config/session.php pada parameter driver.

Kesimpulan

Dengan menambah session timeout pada Laravel, pengguna dapat memiliki pengalaman yang lebih nyaman karena sesi tidak cepat habis, terutama pada aplikasi yang membutuhkan interaksi panjang. Hal ini dapat dilakukan dengan mengubah nilai lifetime pada file config/session.php atau melalui .env sesuai kebutuhan, serta memastikan expire_on_close diset ke false agar sesi tetap aktif meskipun browser ditutup.

Untuk kebutuhan yang lebih spesifik, seperti mengatur timeout berbeda berdasarkan peran pengguna atau aktivitas, Anda bisa membuat middleware custom. Selain itu, penggunaan driver session yang lebih efisien, seperti database atau Redis, juga dianjurkan untuk meningkatkan performa aplikasi berskala besar. Dengan langkah-langkah ini, manajemen sesi di Laravel menjadi lebih fleksibel dan sesuai dengan kebutuhan aplikasi Anda.

5/5 - (1 vote)
Fitri Ana

Recent Posts

Kelebihan, Keterbatasan & Tips Fitur Terjemahan Suara Langsung Google Translate

Meski menawarkan kemudahan luar biasa, fitur terjemahan suara langsung Google Translate lewat headphone tentu bukan…

7 days ago

Plugin All In One SEO (AIOSEO): Panduan Lengkap Optimasi SEO WordPress

Search Engine Optimization (SEO) adalah fondasi utama agar sebuah website dapat bersaing di mesin pencari…

7 days ago

Google Translate Hadirkan Fitur Terjemahan Suara Langsung via Headphone

Perkembangan teknologi kecerdasan buatan semakin mengubah cara manusia berkomunikasi lintas bahasa. Jika sebelumnya terjemahan hanya…

1 week ago

Mengenal On Page SEO vs Off Page SEO untuk Meningkatkan Ranking Website

Dalam dunia optimasi mesin pencari (SEO), ada dua teknik utama yang wajib dipahami oleh pemilik…

1 week ago

Apa Itu Fitur Kilas Balik Tahunan ChatGPT? Fungsi, Manfaat, dan Cara Aksesnya

Fitur “year in review” telah menjadi tren populer di berbagai platform digital. Mulai dari Spotify…

1 week ago

Work-Life Balance: Kunci Hidup Seimbang di Tengah Tuntutan Pekerjaan

Di tengah tuntutan hidup modern yang semakin kompleks, banyak orang terjebak dalam rutinitas kerja tanpa…

1 week ago