- TurboGears 教程
- TurboGears - 主页
- TurboGears - 概述
- TurboGears - 环境
- TurboGears - 第一个程序
- TurboGears - 依赖关系
- TurboGears - 服务模板
- TurboGears - HTTP 方法
- Genshi模板语言
- TurboGears - 包括
- TurboGears - JSON 渲染
- TurboGears - URL 层次结构
- TurboGears - Toscawidgets 表格
- TurboGears - 验证
- TurboGears - 闪讯
- TurboGears - Cookie 和会话
- TurboGears - 缓存
- TurboGears - Sqlalchemy
- TurboGears - 创建模型
- TurboGears - 原油操作
- TurboGears - 数据网格
- TurboGears - 分页
- TurboGears - 管理员访问
- 授权与认证
- TurboGears - 使用 MongoDB
- TurboGears - 脚手架
- TurboGears - 挂钩
- TurboGears - 编写扩展
- TurboGears - 可插拔应用
- TurboGears - 安静的应用程序
- TurboGears - 部署
- TurboGears 有用资源
- TurboGears - 快速指南
- TurboGears - 有用的资源
- TurboGears - 讨论
TurboGears – Cookie 和会话
通常需要保存附加到用户浏览器的简单浏览数据。会话是最常用的技术。会话表示不需要以更持久的形式(如磁盘文件或数据库)存储的数据。
然而,TurboGears 中的会话数据可以由文件系统、数据库或散列 cookie 值支持。少量的会话数据一般保存在cookie中,但对于较大量的会话数据则使用MemCache。
MemCache 是一个系统级守护进程。它提供对缓存数据的快速访问,并且具有极高的可扩展性。但是,它仅适用于安全服务器,因此必须由系统管理员维护和保护。
会话管理中的烧杯
TurboGears 使用 Beaker 进行会话管理。由 gearbox 快速启动的项目默认配置为使用散列 cookie 来存储会话数据。
每次客户端连接时,会话中间件(Beaker)都会使用配置文件中定义的 cookie 名称来检查 cookie。如果未找到 cookie,则会在浏览器中设置它。在所有后续访问中,中间件都会找到 cookie 并使用它。
为了启用会话管理,应通过以下导入语句将会话类合并到项目中 -
from tg import session
将数据保存在会话变量中 -
session[‘key’] = value session.save()
检索会话变量 -
return session[‘key’]
请注意,您需要显式保存会话,以便将密钥存储在该会话中。
会话对象的delete()方法将删除所有用户会话-
session.delete()
尽管不习惯删除任何给定生产环境中的所有用户会话,但您通常会在完成可用性或功能测试后进行清理。
下面给出了一个演示会话的简单示例。RootController 类有一个setsession()方法,用于设置会话变量。
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>"
输入http://localhost:8080/setsession
浏览器中的链接指向http://localhost:8080/getsession,它检索并显示会话变量 -