TurboGears - Cookie & Sesi

Seringkali diperlukan untuk menyimpan data penjelajahan sederhana yang dilampirkan ke browser pengguna. Sesi adalah teknik yang paling umum digunakan. Sesi merepresentasikan data yang tidak perlu disimpan dalam bentuk yang lebih persisten seperti file disk atau database.

Namun, data sesi di TurboGears dapat didukung oleh sistem file, basis data, atau nilai cookie berciri. Sejumlah kecil data sesi biasanya disimpan dalam cookie, tetapi untuk volume data sesi yang lebih besar, MemCache digunakan.

MemCache adalah daemon tingkat sistem. Ini menyediakan akses cepat ke data cache dan sangat skalabel. Namun, ini dimaksudkan untuk digunakan hanya pada server yang aman, dan karenanya harus dijaga dan diamankan oleh sysadmin.

Beaker dalam Manajemen Sesi

TurboGears menggunakan Beaker untuk manajemen sesi. Proyek yang dimulai cepat oleh gearbox secara default dikonfigurasi untuk menggunakan cookie berciri untuk menyimpan data sesi.

Setiap kali klien terhubung, middleware sesi (Beaker) akan memeriksa cookie menggunakan nama cookie, yang telah ditentukan di file konfigurasi. Jika cookie tidak ditemukan, cookie akan disetel di browser. Pada semua kunjungan berikutnya, middleware akan menemukan cookie dan memanfaatkannya.

Untuk mengaktifkan manajemen sesi, kelas sesi harus dimasukkan dalam proyek dengan mengikuti pernyataan import -

from tg import session

Untuk menyimpan data dalam variabel sesi -

session[‘key’] = value
session.save()

Untuk mengambil variabel sesi -

return session[‘key’]

Perhatikan bahwa Anda perlu menyimpan sesi secara eksplisit agar kunci Anda disimpan dalam sesi itu.

Itu delete() metode objek sesi akan menghapus semua sesi pengguna -

session.delete()

Meskipun tidak biasa menghapus semua sesi pengguna pada lingkungan produksi tertentu, Anda biasanya akan melakukannya untuk pembersihan setelah uji kegunaan atau fungsional selesai.

Diberikan di bawah ini adalah contoh sederhana untuk mendemonstrasikan sesi. Kelas RootController memilikisetsession() metode yang menetapkan variabel sesi.

from hello.lib.base import BaseController
from tg import expose, session
class RootController(BaseController):
   
   @expose()
   def setsession(self):
      session['user'] = 'MVL'
      session.save()
      
      str = "<b>sessionVariable set to "+session['user'] 
      str = str+"<br><a href = '/getsession'>click here to retrieve</a></b>"
      return str
   
   @expose()
   def getsession(self):
      return "<b>value of session variable retrieved " +session['user'] +"</b>"

Memasukkan http://localhost:8080/setsession

Tautan di browser mengarah ke http://localhost:8080/getsession yang mengambil dan menampilkan variabel sesi -