Manajemen Sesi ASP.NET [Contoh]

⚡ Ringkasan Cerdas

Manajemen Sesi ASP.NET memungkinkan aplikasi HTTP tanpa status untuk mengingat data pengguna di seluruh permintaan. Dokumen ini menjelaskan ViewState, objek Session untuk menyimpan pasangan kunci-nilai, contoh kerja, mode status sesi, konfigurasi waktu habis (timeout), dan keuntungan dari status sesi.

  • 🌐 HTTP tanpa status: HTTP tidak menyimpan data antar permintaan, sehingga ASP.NET menambahkan mekanisme untuk mempertahankan status.
  • ViewState: ViewState secara otomatis membawa nilai kontrol dari satu halaman ke halaman berikutnya.
  • 🔑 Objek Sesi: Session[“Key”] menyimpan dan mengambil pasangan kunci-nilai sepanjang siklus hidup aplikasi.
  • ⚙️ Mode Status: Status sesi dapat disimpan di InProc, pada StateServer, di SQL Server, atau penyimpanan khusus.
  • Waktu habis: Pengaturan `sessionState timeout` di `web.config` mengontrol berapa lama sebuah sesi tetap aktif.

Tutorial Manajemen Sesi ASP.NET dengan Contoh

Manajemen Sesi ASP.NET

Protokol HTTP tempat semua aplikasi web bekerja adalah protokol tanpa kewarganegaraan. Yang dimaksud dengan stateless adalah bahwa informasi tidak disimpan dari satu permintaan ke permintaan lainnya.

Misalnya, jika Anda memiliki halaman login yang memiliki 2 kotak teks, satu untuk nama dan satu lagi untuk kata sandi. Saat Anda mengklik tombol Login pada halaman tersebut, aplikasi perlu memastikan bahwa nama pengguna dan kata sandi diteruskan ke halaman berikutnya.

Di ASP.Net, hal ini dilakukan dengan berbagai cara. Cara pertama adalah melalui konsep yang disebut ViewState. Di sinilah ASP.Net secara otomatis menyimpan isi dari semua kontrol. ASP.Net juga memastikan bahwa isi tersebut diteruskan ke halaman berikutnya. Hal ini dilakukan melalui properti yang disebut ViewState.

Tidaklah ideal bagi pengembang untuk mengubah apa pun dalam kondisi tampilan. Hal ini karena harus ditangani oleh ASP.Net saja.

Objek Sesi ASP.NET

Cara lainnya adalah dengan menggunakan objek yang disebut “Objek Sesi.” Objek Session tersedia sepanjang siklus hidup aplikasi. Anda dapat menyimpan sejumlah pasangan kunci-nilai di objek Sesi. Jadi di halaman mana pun, Anda bisa menyimpan nilai di objek Session melalui baris kode di bawah ini.

Session["Key"] = value

Ini menyimpan nilai dalam objek Session, dan bagian 'key' digunakan untuk memberi nama pada nilai tersebut. Hal ini memungkinkan nilai tersebut untuk diambil di kemudian hari. Untuk mengambil nilai, Anda cukup mengeluarkan pernyataan di bawah ini.

Session["Key"]

Contoh objek Sesi ASP.NET

Dalam contoh kita, kita akan menggunakan objek Session untuk menyimpan nama yang dimasukkan di kolom teks nama pada halaman. Kemudian kita akan mengambil nilai tersebut dan menampilkannya di halaman sesuai kebutuhan. Mari tambahkan kode di bawah ini ke file Demo.aspx.cs.

Gunakan Objek Sesi

protected void btnSubmit_Click(object sender, EventArgs e)
{
	Session["Name"] = txtName.Text;

	Response.Write(Session["Name"]);

	lblName.Visible = false;
	txtName.Visible = false;
	lstLocation.Visible = false;
	chkC.Visible = false;
	chkASP.Visible = false;
	rdMale.Visible = false;
	rdFemale.Visible = false;
	btnSubmit.Visible = false;
}

Code Penjelasan:-

  1. Baris kode pertama mengambil nilai dari kontrol kotak teks Nama dan menyimpannya dalam objek Sesi. Dengan menentukan kode Session[“Name”], kita memberi nama properti tersebut dengan nama “Nama”. Dengan menentukan nama untuk properti tersebut, akan lebih mudah untuk mengambilnya di kemudian hari.
  2. Baris kode berikutnya mengambil nilai yang disimpan dari objek Session. Ia kemudian menulis nilai ini melalui metode 'Response.Write' kembali ke klien.
  3. Terakhir, kita membuat semua kontrol pada formulir menjadi tidak terlihat. Jika kita tidak melakukan ini, semua kontrol beserta nilai respons kita akan ditampilkan bersamaan.

Setelah Anda melakukan perubahan di atas, Anda akan melihat hasil sebagai berikut.

Keluaran:

Gunakan Objek Sesi

Dari output, Anda dapat melihat bahwa nilai Sesi dari nama telah diambil dan ditampilkan di browser.

Mode Status Sesi ASP.NET

ASP.NET dapat menyimpan data sesi di beberapa tempat, yang disebut mode status sesi. Mode yang Anda pilih memengaruhi kinerja, skalabilitas, dan apakah data tetap ada setelah aplikasi dimulai ulang. Tabel di bawah ini membandingkannya:

mode Di mana status disimpan Terbaik untuk
InProc Di memori server web (default) Aplikasi server tunggal; tercepat, tetapi akan hilang saat restart.
Server Negara Proses Layanan Status ASP.NET terpisah Farm web; tetap berfungsi setelah aplikasi dimulai ulang.
Server SQL Basis data SQL Server Pusat data web yang membutuhkan status yang tahan lama dan dapat diskalakan.
Kustom Penyedia khusus yang Anda implementasikan Toko khusus seperti Redis
Off Status sesi dinonaktifkan Aplikasi yang tidak memerlukan sesi

InProc adalah default dan yang tercepat, tetapi untuk penerapan load balancing, StateServer atau SQLServer menjaga sesi tetap tersedia di beberapa server.

Cara Mengonfigurasi Batas Waktu Sesi di ASP.NET

Sesi tidak berlangsung selamanya; sesi akan berakhir setelah periode tidak aktif. Anda dapat mengatur batas waktu ini di file web.config menggunakan elemen sessionState, di mana nilai batas waktu dalam menit:

<configuration>
  <system.web>
    <sessionState mode="InProc" timeout="20" />
  </system.web>
</configuration>

Anda juga dapat mengaturnya dalam kode dengan Session.Timeout = 30;. Batas waktu default adalah 20 menit. Memilih batas waktu yang lebih pendek akan membebaskan memori server lebih cepat dan meningkatkan keamanan, sementara batas waktu yang lebih lama akan membuat pengguna tetap masuk lebih lama.

Keuntungan dan Kerugian dari Sistem Sidang Parlemen

Session state memang praktis, tetapi ada beberapa kekurangan yang perlu dipertimbangkan sebelum terlalu bergantung padanya.

Keuntungan:

  • Mudah digunakan untuk menyimpan data per pengguna, seperti data toko.ping keranjang belanja atau detail login.
  • Dapat menyimpan objek kompleks, bukan hanya string.
  • Data disimpan di server, sehingga lebih aman daripada penyimpanan di sisi klien.

kekurangan:

  • Mode InProc mengonsumsi memori server dan tidak dapat diskalakan di seluruh web farm.
  • Data sesi akan hilang ketika sesi berakhir atau aplikasi dimulai ulang (dalam mode InProc).
  • Menyimpan data dalam jumlah besar per pengguna dapat menurunkan performa saat beban kerja tinggi.

Pertanyaan Umum Demo Slot

Ya. Asisten AI dapat menghasilkan kode untuk menyimpan dan membaca nilai Sesi, menyarankan mode status yang tepat, dan menulis pengaturan web.config. RevPeriksa kode yang dihasilkan untuk memastikan kode tersebut sesuai dengan kebutuhan skalabilitas dan keamanan Anda.

Ya. Alat peninjau kode berbasis AI dapat menandai risiko seperti fiksasi sesi, hilangnya cookie khusus HTTPS, atau penyimpanan data sensitif dalam sesi. Perlakukan temuan tersebut sebagai panduan dan konfirmasikan perbaikan dengan pengujian keamanan sebelum penerapan.

Status sesi menyimpan data untuk sesi satu pengguna, sedangkan status aplikasi menyimpan data yang digunakan bersama oleh semua pengguna aplikasi. Gunakan Sesi untuk nilai per pengguna dan Aplikasi untuk data global seperti penghitung atau konfigurasi.

Tidak. Setiap pengguna mendapatkan sesi terpisah, yang diidentifikasi oleh ID sesi unik yang tersimpan dalam cookie. Satu pengguna tidak dapat membaca nilai sesi pengguna lain, itulah sebabnya Session digunakan untuk data per pengguna.

Ringkaslah postingan ini dengan: