Routing, Request/Response, dan Session pada CodeIgniter

⚙️ Routing, Request/Response, dan Session pada CodeIgniter 4

Mengenal arsitektur dan alur kerja inti CodeIgniter 4 dalam menangani permintaan (request) dan respon (response), serta manajemen sesi pengguna.

🛣️ 1. Routing di CodeIgniter 4

Routing adalah mekanisme untuk menentukan URL mana yang memanggil controller dan method tertentu. Semua pengaturan rute berada di file:

app/Config/Routes.php
        

Contoh dasar routing:

$routes->get('/', 'Home::index');
$routes->get('/about', 'PageController::about');
$routes->post('/user/login', 'UserController::login');
        

Keterangan:

  • $routes->get() → digunakan untuk permintaan HTTP GET.
  • $routes->post() → digunakan untuk permintaan HTTP POST.
  • 'Home::index' → memanggil controller Home dan method index().

✨ Routing dengan Parameter

$routes->get('/user/(:num)', 'UserController::profile/$1');
        

(:num) digunakan untuk menerima parameter numerik. Nilainya akan diteruskan ke method controller.

🔒 Routing dengan Filter

$routes->get('/dashboard', 'AdminController::index', ['filter' => 'auth']);
        

Filter auth akan memeriksa apakah pengguna sudah login sebelum mengakses /dashboard.


📨 2. Request dan Response

CI4 menyediakan class Request untuk menangani data dari browser, dan class Response untuk mengirimkan data kembali ke client.

📥 Request Object

Untuk mendapatkan data dari form, URL, atau header:

$request = \Config\Services::request();

// Ambil data GET
$name = $request->getGet('name');

// Ambil data POST
$email = $request->getPost('email');

// Ambil semua input
$data = $request->getVar();
        

📤 Response Object

Digunakan untuk mengirimkan respon balik ke client:

$response = \Config\Services::response();
return $response->setJSON(['status' => 'success', 'message' => 'Data berhasil disimpan']);
        

Kita juga dapat mengatur status code HTTP:

return $response->setStatusCode(404, 'Not Found');
        

🔐 3. Session di CodeIgniter 4

Session digunakan untuk menyimpan data pengguna sementara di server. Biasanya dipakai untuk login, notifikasi, dan data antar halaman.

🧩 Mengaktifkan Session

Session sudah aktif secara default. Namun, kita dapat memanggil service-nya secara manual:

$session = \Config\Services::session();
        

💾 Menyimpan dan Mengambil Data Session

// Simpan data ke session
$session->set('username', 'DeltaMarena');

// Ambil data session
$user = $session->get('username');

// Hapus session tertentu
$session->remove('username');

// Hapus semua session
$session->destroy();
        

⏰ 4. Auto Logout (Session Timeout)

Fitur ini berguna agar pengguna otomatis logout jika halaman tidak disentuh selama 5 menit. Hal ini meningkatkan keamanan terutama untuk aplikasi login multiuser.

⚙️ Langkah 1 – Atur Session Timeout di .env

app.sessionExpiration = 300
        

Nilai 300 berarti session akan kadaluarsa setelah 300 detik (5 menit).

⚙️ Langkah 2 – Buat Filter Auto Logout

Tambahkan file baru di:

app/Filters/AutoLogoutFilter.php
        

Isi kodenya:

namespace App\Filters;

use CodeIgniter\HTTP\RequestInterface;
use CodeIgniter\HTTP\ResponseInterface;
use CodeIgniter\Filters\FilterInterface;

class AutoLogoutFilter implements FilterInterface
{
    public function before(RequestInterface $request, $arguments = null)
    {
        $session = session();

        // Jika user belum login
        if (!$session->get('isLoggedIn')) {
            return redirect()->to('/login');
        }

        $inactive = 300; // 5 menit
        $lastActivity = $session->get('lastActivity');

        if ($lastActivity && (time() - $lastActivity > $inactive)) {
            $session->destroy();
            return redirect()->to('/login')->with('error', 'Session habis, silakan login kembali.');
        }

        // Update waktu aktivitas terakhir
        $session->set('lastActivity', time());
    }

    public function after(RequestInterface $request, ResponseInterface $response, $arguments = null)
    {
    }
}
        

⚙️ Langkah 3 – Daftarkan Filter

Buka app/Config/Filters.php dan daftarkan:

public array $aliases = [
    'csrf' => \CodeIgniter\Filters\CSRF::class,
    'toolbar' => \CodeIgniter\Filters\DebugToolbar::class,
    'auth' => \App\Filters\AuthFilter::class,
    'autologout' => \App\Filters\AutoLogoutFilter::class,
];
        

⚙️ Langkah 4 – Terapkan pada Routing

$routes->get('/dashboard', 'DashboardController::index', ['filter' => ['auth', 'autologout']]);
        

Sekarang, jika pengguna tidak aktif selama 5 menit, session otomatis habis dan diarahkan ke halaman login.


🚀 Kesimpulan

Routing, Request/Response, dan Session adalah tiga komponen penting dalam alur kerja CodeIgniter 4. Dengan memahami ketiganya, pengembang dapat membuat aplikasi yang dinamis, interaktif, dan aman.

  • 🔹 Routing mengatur arah permintaan ke controller tertentu.
  • 🔹 Request/Response menangani komunikasi antara client dan server.
  • 🔹 Session menyimpan data pengguna sementara.
  • 🔹 Auto Logout menjaga keamanan dengan membatasi waktu aktif pengguna.

Dengan pemahaman yang baik terhadap konsep-konsep ini, kamu siap membangun aplikasi web profesional menggunakan CodeIgniter 4.