web2py将值插入会话

时间:2012-09-21 08:49:48

标签: session web2py

我遇到会话问题

用户从下拉菜单中选择smth后,我必须将该值插入会话。 我需要该值来获取模型中auth表的数据库(如果我从request.var读取,它会在登录/注册表单时崩溃)。我在哪里插入会话中的值以及如何(view,controler)。

现在我使用cookies解决了它,但它并不是最安全的。

任何建议=

谢谢

1 个答案:

答案 0 :(得分:5)

session是Storage类的另一个实例。无论存储在会话中的是什么,例如:

session.myvariable = "hello"

可以在以后检索:

a = session.myvariable

换句话说,它已经存在 - 只需为它分配变量.. 如果您希望使用数据库,则必须通过模型在数据库中定义会话表。 引自web2py手册:

  

例如,在数据库中存储会话:

session.connect(request, response, db, masterapp=None)
     

其中db是打开的数据库连接的名称(由DAL返回)。它告诉web2py您要将会话存储在数据库中而不是文件系统中。 session.connect必须在db = DAL(...)之后,但在需要会话的任何其他逻辑之前,例如,设置Auth。

     

web2py创建一个表:

db.define_table('web2py_session',
             Field('locked', 'boolean', default=False),
             Field('client_ip'),
             Field('created_datetime', 'datetime', default=now),
             Field('modified_datetime', 'datetime'),
             Field('unique_key'),
             Field('session_data', 'text'))
     

并将cPickled会话存储在session_data字段中。

     

默认情况下,选项masterapp = None告诉web2py尝试在正在运行的应用程序中检索request.application中具有名称的应用程序的现有会话。

     

如果您希望两个或更多应用程序共享会话,请将masterapp设置为主应用程序的名称。