我遇到会话问题
用户从下拉菜单中选择smth后,我必须将该值插入会话。 我需要该值来获取模型中auth表的数据库(如果我从request.var读取,它会在登录/注册表单时崩溃)。我在哪里插入会话中的值以及如何(view,controler)。
现在我使用cookies解决了它,但它并不是最安全的。
任何建议=
谢谢
答案 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设置为主应用程序的名称。