TurboGears - pliki cookie i sesje
Często wymagane jest przechowywanie prostych danych przeglądania dołączonych do przeglądarki użytkownika. Sesje to najczęściej stosowana technika. Sesja reprezentuje dane, które nie muszą być przechowywane w bardziej trwałej formie, takiej jak plik na dysku lub baza danych.
Jednak dane sesji w TurboGears mogą być wspierane przez system plików, bazę danych lub zaszyfrowane wartości plików cookie. Niewielka ilość danych sesji jest zazwyczaj przechowywana w plikach cookie, ale w przypadku większej ilości danych sesji używana jest pamięć MemCache.
MemCache to demon na poziomie systemu. Zapewnia szybki dostęp do danych w pamięci podręcznej i jest niezwykle skalowalny. Jednak jest przeznaczony do użytku tylko na bezpiecznych serwerach i dlatego musi być utrzymywany i zabezpieczany przez administratora systemu.
Zlewka w zarządzaniu sesjami
TurboGears używa Beaker do zarządzania sesjami. Projekt uruchamiany szybko przez gearbox jest domyślnie skonfigurowany do przechowywania danych sesji za pomocą zaszyfrowanych plików cookie.
Za każdym razem, gdy klient łączy się, oprogramowanie pośredniczące sesji (Beaker) sprawdzi plik cookie przy użyciu nazwy pliku cookie, która została zdefiniowana w pliku konfiguracyjnym. Jeśli plik cookie nie zostanie znaleziony, zostanie ustawiony w przeglądarce. Podczas wszystkich kolejnych wizyt oprogramowanie pośredniczące znajdzie plik cookie i wykorzysta go.
Aby umożliwić zarządzanie sesjami, klasę sesji należy włączyć do projektu, wykonując instrukcję importu -
from tg import session
Aby zapisać dane w zmiennej sesji -
session[‘key’] = value
session.save()
Aby pobrać zmienną sesji -
return session[‘key’]
Pamiętaj, że musisz jawnie zapisać sesję, aby klucze były przechowywane w tej sesji.
Plik delete() metoda obiektu sesji usunie wszystkie sesje użytkownika -
session.delete()
Chociaż nie jest zwyczajowo usuwać wszystkie sesje użytkowników w danym środowisku produkcyjnym, zazwyczaj będzie to robione w celu wyczyszczenia po wykonaniu testów użyteczności lub funkcjonalności.
Poniżej podano prosty przykład pokazujący sesje. Klasa RootController ma rozszerzeniesetsession() metoda, która ustawia zmienną sesji.
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>"
Wchodzić http://localhost:8080/setsession
Link w przeglądarce prowadzi do http://localhost:8080/getsession który pobiera i wyświetla zmienną sesji -