"Web2py manual chinese - 三零卫士工业防火墙系统技术白皮书"
在Web2py框架中,session会话对象扮演着重要的角色,它允许开发者存储和检索用户在一次会话中的状态信息。session是Storage类的一个实例,这意味着它可以像字典一样动态地存储和获取数据。例如,你可以通过`session.myvariable = "hello"`来存储数据,然后在后续的代码中使用`a = session.myvariable`来获取这个值。值得注意的是,如果尝试访问session中不存在的键,不会抛出异常,而是返回None。
session对象有三个主要方法:
1. `session.forget(response)`:这个方法用于告诉web2py不要保存会话。通常在控制器的某些操作中使用,当这些操作不需要跟踪用户活动时。调用`session.forget(response)`不仅可以防止会话文件的写入,还能解锁和关闭会话文件,以提高性能,特别是在有多个Ajax请求的页面中。如果会话存储在数据库中,它不会被锁定。
2. `session.secure()`:这个方法用于设置会话cookie为安全cookie,确保只有在通过HTTPS连接时,浏览器才会发送会话cookie给服务器。这增强了安全性,尤其是对于处理敏感数据的应用程序。
3. `session.connect(request, response, db, masterapp=None)`:此方法指示web2py将会话存储在数据库而不是文件系统中。参数`db`是一个开放的数据库连接,`session.connect`应在`db=DAL(...)`之后,但在任何其他需要会话的逻辑之前调用。如果多个应用需要共享会话,可以设置`masterapp`为主应用的名称。
在web2py中,会话数据默认存储在名为`web2py_session`的数据库表中,该表包含`session_data`字段,用于存储cPickle序列化的会话数据。默认情况下,web2py会在运行`request.application`应用时尝试检索已存在的会话。如果需要跨应用共享会话,可以通过设置`masterapp`参数实现。
为了查看应用的状态,你可以创建一个专门的动作,如`status`,返回`request`、`session`和`response`的详细信息。
这份文档是Web2py中文手册的一部分,涵盖了从Python基础知识到Web2py框架的高级特性的介绍,包括模型-视图-控制器(MVC)架构、安全、认证、CRUD操作、时间日期处理以及web2py的核心组件等。这是一份深入理解web2py并进行开发工作的宝贵参考资料。