Objek sesi teknologi ASP (Halaman Server Aktif) digunakan untuk menyimpan informasi pribadi pengguna selama percakapan. Variabel dan objek yang ditentukan dalam objek sesi pengguna saat ini dapat dibagikan di antara halaman, tetapi tidak dapat diakses oleh pengguna lain dalam aplikasi. informasi status.
Objek sesi memiliki properti yang sangat penting: batas waktu, yang digunakan untuk mengatur waktu objek sesi dapat tetap tidak aktif sebelum sumber daya sesi dirilis (nilai default adalah 20 menit). Ketika nilai waktu yang ditetapkan oleh properti timeout habis, sumber daya sesi akan dirilis. Hancurkan objek sesi melalui atribut timeout, hindari objek sesi yang dihasilkan di server tanpa batasan dan melindungi sumber daya server. Namun, dalam pengembangan jaringan yang sebenarnya, sering kali dihadapi bahwa proses aplikasi tidak dapat diselesaikan secara normal karena kegagalan objek sesi dan hilangnya informasi status pengguna.
Meskipun strategi melepaskan sumber daya menggunakan atribut timeout adalah untuk tujuan melindungi server, kegagalan objek sesi yang tidak terduga telah menjadi kerugian dalam pengembangan aplikasi. Oleh karena itu, dalam pengembangan aplikasi aktual, masalah kegagalan objek sesi harus diselesaikan.
Solusi tradisional
Solusi yang ada semuanya menggunakan metode sisi server untuk menyelesaikan masalah kegagalan objek sesi. Metode pengobatan yang khas dibagi menjadi dua kategori: pengobatan sebelum kegagalan dan pengobatan setelah kegagalan.
Pemrosesan sebelum kegagalan mengacu pada transfer dan pemrosesan variabel lainnya sebelum objek sesi telah kedaluwarsa untuk mencegah masalah sebelum itu terjadi. Solusi khas adalah mengatur timer dalam aplikasi, memicu timer 5 menit sebelum objek sesi gagal, dan kemudian mengatur ulang berbagai variabel dan objek objek sesi. Metode ini menambahkan beban tambahan ke server karena timer harus dipelihara secara real time di sisi server dan program harus dipastikan untuk aktif sepanjang sesi.
Pemrosesan setelah kegagalan mengacu pada mendorong pengguna untuk memproses segera setelah objek sesi berakhir. Solusi khas adalah menyimpan breakpoint di sisi server setelah objek sesi gagal, dan meminta pengguna untuk masuk lagi dan terus menyelesaikan pekerjaan. Metode ini mudah diimplementasikan, tetapi sering dikeluhkan dan dikritik oleh pengguna akhir karena pemulihan otomatis breakpoint yang tidak lengkap dan kompleksitas proses login.
Menanggapi kekurangan dari dua jenis solusi di atas, dalam praktik pemrograman, penulis menggabungkan karakteristik objek cookie dan menggunakan metode untuk secara bersama-sama mengakses variabel tingkat sesi pada klien, yang tidak hanya menghindari permintaan tambahan untuk server server sumber daya, tetapi juga memecahkan masalah masalah breakpoint tidak dipulihkan secara otomatis, dan juga menghilangkan kesulitan masuk lagi.
Solusi baru
Objek cookie adalah paket kecil informasi yang menyimpan data tentang pengguna saat ini, yang dapat dilewati antara browser dan server web. Dalam aplikasi Web, cookie menyediakan mekanisme untuk melacak dan merekam setiap lokasi pengguna. Salah satu penggunaan cookie yang paling umum adalah menghemat waktu dan tanggal halaman web terakhir yang akan dikunjungi dalam aplikasi web atau URL yang akan dikunjungi.
Biasanya, objek cookie disimpan di subdirektori cookie di direktori sistem windows klien sebagai file. Data informasi yang disimpan dalam objek cookie dapat disimpan untuk waktu yang lama, sehingga variabel tingkat sesi dapat didukung dalam objek cookie. objek cookie.
Objek cookie memiliki sifat berikut:
● Kedaluwarsa: Tetapkan tanggal ketika objek cookie kedaluwarsa;
● Domain: Menentukan transmisi objek cookie sebagai anggota yang ditentukan hanya dengan atribut domain;
● Jalur: Tentukan jalur pengiriman objek cookie;
● Aman: Untuk mengklarifikasi apakah objek cookie aman;
● Haskeys: Mengembalikan apakah objek cookie berisi banyak nilai.
Jika properti yang kedaluwarsa dari objek cookie tidak didefinisikan secara eksplisit, objek cookie akan kedaluwarsa di akhir sesi pengguna.
Baca dan tulis objek melalui koleksi permintaan dan koleksi respons di ASP. Sintaks untuk variabel penulisan ke objek cookie adalah sebagai berikut:
Response.cookies (cookie) [(kunci) | .attribute] = nilai
Di mana, cookie adalah nama file cookie, kunci menunjukkan elemen kamus, atribut adalah sifat spesifik dari cookie, dan nilainya adalah nilai yang ditetapkan untuk cookie. Misalnya, untuk membuat cookie yang disebut myhobby dan menetapkan nilainya untuk: bola basket, gunakan sintaks berikut:
< %Response.cookies (myhobby) = Basketball %>
Metode membaca objek cookie pada mesin klien adalah sebagai berikut:
Request.cookies (cookie) [(kunci) | .attribute]
Di antara mereka, cookie adalah nama cookie yang diminta, kuncinya adalah subskrip dari nilai subkey, dan atribut digunakan untuk menunjukkan atribut cookie. Misalnya: Untuk mengekstrak informasi dari cookie yang disebut myhobby dan menulis nilainya ke halaman, gunakan sintaks berikut:
< % Request.cookies (myhobby) %>
Perlu dicatat bahwa header halaman HTTP tidak dapat ditulis ke objek cookie setelah halaman HTTP dikirim ke browser yang meminta. Dengan kata lain, informasi cookie tidak dapat dikirim ke browser setelah pengidentifikasi HTML dikirim ke browser.
Implementasi spesifik
Berikut ini adalah implementasi ruang obrolan berdasarkan teknologi ASP untuk memperkenalkan cara menangani masalah kegagalan variabel objek sesi.
● Variabel tingkat sesi awal sebelum pengguna masuk: nama pengguna (digunakan untuk menyimpan nama pengguna login).
<%Sesi (nama pengguna) =%>
// inisialisasi objek cookie
< % Response.cookies (nama pengguna) = %>
● Ketika pengguna masuk, atur variabel tingkat sesi dan cadangkan ke objek cookie klien.
<%username = trim (request.for (username))%>
< % Sesi (nama pengguna) = nama pengguna %>
// Cadangkan variabel tingkat sesi ke objek cookie klien
< % Response.cookies (nama pengguna) = nama pengguna %>
● Ketika pengguna berbicara, variabel tingkat sesi dibaca.
< % username = sesi (nama pengguna) %>
// Jika variabel telah kedaluwarsa, cari objek cookie klien
< % jika nama pengguna = lalu %>
< % username = request.cookies (nama pengguna) %>
< % jika nama pengguna = lalu %>
// Jika pengguna memasuki ruang obrolan tanpa masuk, nilai atribut objek cookie kosong. Saat ini, pengguna diminta untuk memiliki kesalahan dan beralih ke halaman login pengguna
< %Response.redirect error.html %>
< % else %>
// Kembalikan variabel tingkat sesi ini dari objek cookie
< % Sesi (nama pengguna) = nama pengguna %>
< % berakhir jika %>
< % berakhir jika %>
● Ketika pengguna keluar dari ruang obrolan, bersihkan objek tingkat sesi dan objek cookie.
<%Sesi (nama pengguna) =%>
// Bersihkan nilai atribut objek cookie untuk menghindari pengguna yang masuk ke ruang obrolan tanpa masuk
< % Response.cookies (nama pengguna) = %>
Kode di atas dijalankan dan diteruskan di lingkungan Windows NT 4.0 + IIS 4.0 + IE 5.0.
Ringkasan
Metode mengakses variabel tingkat sesi di klien adalah sederhana dan praktis, dan dapat secara efektif menghindari masalah seperti login paksa oleh pengguna.