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

浏览器中的链接指向 https://127.0.0.1:8080/getsession,它检索并显示 Session 变量:
