我遇到会话问题
用户从下拉菜单中选择smth后,我必须将该值插入会话.我需要该值来获取模型中auth表的数据库(如果我从request.var读取,它会在登录/注册表单时崩溃).我在哪里插入会话中的值以及如何(view,controler).
现在我用cookie解决了它,但它不是最安全的.
任何建议=
谢谢
session是Storage类的另一个实例.无论存储在会话中的是什么,例如:
session.myvariable = "hello"
Run Code Online (Sandbox Code Playgroud)
可以在以后检索:
a = session.myvariable
Run Code Online (Sandbox Code Playgroud)
换句话说,它已经存在 - 只需为其分配变量.如果您希望使用数据库,则必须通过模型在数据库中定义会话表.从web2py手册引用:
例如,要在数据库中存储会话:
Run Code Online (Sandbox Code Playgroud)session.connect(request, response, db, masterapp=None)其中db是打开的数据库连接的名称(由DAL返回).它告诉web2py您要将会话存储在数据库中而不是文件系统中.session.connect必须在db = DAL(...)之后,但在需要会话的任何其他逻辑之前,例如,设置Auth.
web2py创建一个表:
Run Code Online (Sandbox Code Playgroud)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'))并在session_data字段中存储cPickled会话.
默认情况下,选项masterapp = None告诉web2py尝试在正在运行的应用程序中检索request.application中具有名称的应用程序的现有会话.
如果您希望两个或更多应用程序共享会话,请将masterapp设置为主应用程序的名称.