> For the complete documentation index, see [llms.txt](https://learn.devlabss.my.id/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://learn.devlabss.my.id/laravel/bab-9-autentikasi-and-middleware/9.1-konsep-session-and-middleware.md).

# 9.1 Konsep Session & Middleware

## Konsep session & middleware

Yuk kita mulai BAB 9.

Kalau BAB 8 fokus mengelola data, sekarang kita menambah lapisan keamanan.

Mulai bab ini, aplikasi E-Library tidak boleh lagi terlalu terbuka.

Kita perlu tahu siapa yang sedang login.

Kita juga perlu menentukan halaman mana yang boleh diakses.

Di sinilah **session** dan **middleware** mulai berperan.

### Target belajar BAB 9

Setelah menyelesaikan BAB 9, Anda diharapkan bisa:

* menjelaskan fungsi session
* menjelaskan peran middleware `auth`
* memasang login dasar dengan Breeze
* membatasi halaman agar hanya bisa diakses user login
* menampilkan data pengguna yang sedang aktif

### Teori awal dan analogi

Anak RPL, bayangkan perpustakaan sekolah punya ruang admin.

Tidak semua siswa boleh masuk ke ruang itu.

Hanya petugas yang sudah terdaftar dan punya akses.

Saat petugas datang, ia login lebih dulu.

Setelah berhasil login, petugas dianggap sedang aktif oleh sistem.

Status aktif itulah yang mirip dengan **session**.

Lalu di pintu ruang admin ada penjaga.

Penjaga memeriksa apakah orang yang datang memang sudah punya akses.

Peran penjaga itu mirip dengan **middleware**.

Jadi sederhananya:

* session menyimpan status pengguna
* middleware memeriksa apakah pengguna boleh lewat

### Apa itu session

Session adalah cara Laravel mengingat pengguna dari satu request ke request berikutnya.

Tanpa session, setelah login pengguna akan langsung dianggap lupa oleh sistem.

Akibatnya, setiap pindah halaman pengguna seperti harus mulai dari nol lagi.

Dengan session:

* status login bisa dipertahankan
* data pengguna bisa dikenali
* halaman tertentu bisa dibatasi aksesnya

### Apa itu middleware

Middleware adalah lapisan pemeriksa di tengah alur request.

Sebelum request masuk ke controller, middleware bisa mengecek sesuatu lebih dulu.

Misalnya:

* apakah pengguna sudah login
* apakah pengguna punya hak akses tertentu
* apakah request aman untuk diproses

Pada bab ini, middleware yang paling penting adalah `auth`.

Middleware ini memeriksa apakah pengguna sudah login atau belum.

### Kenapa BAB 9 penting untuk proyek E-Library

Sampai BAB 8, halaman daftar buku masih bisa dibuat terbuka.

Tetapi pada aplikasi yang lebih rapi, fitur seperti:

* tambah buku
* edit buku
* hapus buku

tidak seharusnya bisa diakses sembarang orang.

Karena itu, kita perlu sistem login dan penjagaan akses.

### Gambaran besar alur BAB 9

Supaya tidak bingung, pahami dulu alur besar bab ini.

```
pengguna login -> Laravel membuat session -> middleware memeriksa session -> halaman privat boleh diakses
```

Kalau pengguna belum login:

```
pengguna membuka halaman privat -> middleware menolak -> pengguna diarahkan ke halaman login
```

### Langkah praktik ringan sebelum lanjut

Sebelum masuk ke instalasi login, cek dulu kondisi proyek Anda.

{% stepper %}
{% step %}

### Pastikan fitur CRUD buku sudah berjalan

Cek dulu bahwa halaman daftar buku masih normal.

Fitur ini nanti akan kita jadikan contoh halaman yang dilindungi.
{% endstep %}

{% step %}

### Pastikan database masih terhubung

Fitur login akan memakai tabel pengguna.

Karena itu, koneksi database harus tetap sehat.
{% endstep %}

{% step %}

### Siapkan terminal proyek

BAB 9 akan banyak memakai perintah instalasi.

Jadi pastikan terminal proyek Laravel Anda siap dipakai.
{% endstep %}
{% endstepper %}

### Penjelasan pasca-praktik

Sebelum menulis kode login, Anda perlu paham satu hal penting.

Login bukan hanya soal form email dan password.

Login adalah gabungan dari:

* form autentikasi
* pemeriksaan data pengguna
* penyimpanan status login ke session
* penjagaan akses dengan middleware

Kalau empat hal ini sudah Anda pahami, BAB 9 akan terasa jauh lebih masuk akal.

### Troubleshooting yang paling sering

Masalah yang paling sering muncul di awal BAB 9:

* mengira login hanya soal tampilan form
* belum paham fungsi session setelah login
* mengira middleware adalah controller
* bingung kenapa halaman tertentu harus dikunci

{% hint style="warning" %}
Jangan menganggap session sama dengan database. Session dipakai untuk menyimpan status sementara pengguna, bukan untuk menyimpan semua data aplikasi.
{% endhint %}

{% hint style="info" %}
Middleware bisa dibayangkan seperti pemeriksa akses sebelum request masuk ke logika utama aplikasi.
{% endhint %}

### Output yang harus terlihat

Setelah menyelesaikan BAB 9, hasil minimal yang seharusnya sudah ada:

* halaman login dan register berhasil tampil
* akun bisa dibuat dan dipakai login
* halaman privat menolak user yang belum login
* nama user aktif bisa tampil di aplikasi

### Poin evaluasi bab 9.1

Pastikan Anda sudah memahami poin berikut:

* Saya paham session dipakai untuk mengingat status login pengguna.
* Saya paham middleware memeriksa request sebelum masuk ke controller.
* Saya paham middleware `auth` dipakai untuk membatasi akses pengguna yang belum login.
* Saya paham BAB 9 fokus pada autentikasi dan pengamanan halaman.

Jika semuanya sudah jelas, lanjut ke [9.2 Instalasi Login dengan Laravel Breeze](/laravel/bab-9-autentikasi-and-middleware/9.2-instalasi-login-dengan-laravel-breeze.md).


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://learn.devlabss.my.id/laravel/bab-9-autentikasi-and-middleware/9.1-konsep-session-and-middleware.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
