TurboGears - Cookies et sessions

Il est souvent nécessaire de conserver de simples données de navigation attachées au navigateur d'un utilisateur. Les séances sont la technique la plus couramment utilisée. La session représente des données qui n'ont pas besoin d'être stockées sous une forme plus persistante comme un fichier disque ou une base de données.

Cependant, les données de session dans TurboGears peuvent être sauvegardées par des valeurs de système de fichiers, de base de données ou de cookies hachés. Une petite quantité de données de session est généralement conservée dans les cookies, mais pour le plus grand volume de données de session, MemCache est utilisé.

MemCache est un démon au niveau du système. Il fournit un accès rapide aux données mises en cache et est extrêmement évolutif. Cependant, il est destiné à être utilisé uniquement sur des serveurs sécurisés, et doit donc être maintenu et sécurisé par sysadmin.

Bécher dans la gestion de session

TurboGears utilise Beaker pour la gestion de session. Un projet démarré rapidement par gearbox est configuré par défaut pour utiliser des cookies hachés pour stocker les données de session.

Chaque fois qu'un client se connecte, le middleware de session (Beaker) inspectera le cookie en utilisant le nom du cookie, qui a été défini dans le fichier de configuration. Si le cookie n'est pas trouvé, il sera défini dans le navigateur. Lors de toutes les visites suivantes, le middleware trouvera le cookie et l'utilisera.

Afin d'activer la gestion de session, la classe de session doit être incorporée dans le projet en suivant l'instruction d'importation -

from tg import session

Pour enregistrer les données dans une variable de session -

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

Pour récupérer la variable de session -

return session[‘key’]

Notez que vous devez enregistrer explicitement la session pour que vos clés soient stockées dans cette session.

le delete() la méthode de l'objet session effacera toutes les sessions utilisateur -

session.delete()

Même s'il n'est pas habituel de supprimer toutes les sessions utilisateur sur un environnement de production donné, vous le ferez généralement pour le nettoyage une fois les tests d'utilisabilité ou fonctionnels effectués.

Ci-dessous est un exemple simple pour démontrer les sessions. La classe RootController a unsetsession() méthode qui définit une variable de session.

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>"

Entrer http://localhost:8080/setsession

Un lien dans le navigateur mène à http://localhost:8080/getsession qui récupère et affiche la variable de session -