TurboGears - Cookies y sesiones
A menudo se requiere mantener datos de navegación simples adjuntos al navegador de un usuario. Las sesiones son la técnica más utilizada. La sesión representa datos que no necesitan almacenarse en una forma más persistente como un archivo de disco o una base de datos.
Sin embargo, los datos de sesión en TurboGears pueden estar respaldados por un sistema de archivos, una base de datos o valores de cookies con hash. Generalmente, una pequeña cantidad de datos de sesión se guarda en cookies, pero para el mayor volumen de datos de sesión se usa MemCache.
MemCache es un demonio a nivel de sistema. Proporciona un acceso rápido a los datos almacenados en caché y es extremadamente escalable. Sin embargo, está diseñado para usarse solo en servidores seguros y, por lo tanto, debe ser mantenido y protegido por sysadmin.
Vaso de precipitados en la gestión de sesiones
TurboGears usa Beaker para la gestión de sesiones. Un proyecto iniciado rápidamente por la caja de cambios está configurado de forma predeterminada para usar cookies hash para almacenar datos de sesión.
Cada vez que un cliente se conecta, el middleware de la sesión (Beaker) inspeccionará la cookie utilizando el nombre de la cookie, que se ha definido en el archivo de configuración. Si no se encuentra la cookie, se instalará en el navegador. En todas las visitas posteriores, el middleware encontrará la cookie y la utilizará.
Para habilitar la gestión de sesiones, la clase de sesión debe incorporarse en el proyecto siguiendo la declaración de importación:
from tg import session
Para guardar los datos en una variable de sesión:
session[‘key’] = value
session.save()
Para recuperar la variable de sesión:
return session[‘key’]
Tenga en cuenta que debe guardar explícitamente la sesión para que sus claves se almacenen en esa sesión.
los delete() El método del objeto de sesión borrará todas las sesiones de usuario -
session.delete()
Aunque no es habitual eliminar todas las sesiones de usuario en un entorno de producción dado, normalmente lo hará para limpiar después de que se hayan realizado las pruebas funcionales o de usabilidad.
A continuación se muestra un ejemplo sencillo para demostrar sesiones. La clase RootController tiene unsetsession() método que establece una variable de sesión.
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>"
Entrar http://localhost:8080/setsession
Un enlace en el navegador conduce a http://localhost:8080/getsession que recupera y muestra la variable de sesión -