2012-09-21 56 views
1

我遇到了會話問題web2py插入會話的值

用戶從下拉菜單中選擇smth後,我必須將該值插入會話。 我需要該值才能訪問模型中驗證表的數據庫(如果我從request.var中讀取,它會在登錄/註冊表單時崩潰)。我在哪裏插入價值會議和如何(查看,控制器)。

現在我用cookies解決了它,但它不是最安全的。

任何建議=

謝謝

回答

5

會話存儲類的另一個實例。無論存儲到會話,例如:

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')) 

並存儲在session_data是場cPickled會議。

默認情況下,選項masterapp = None會告訴web2py嘗試檢索正在運行的應用程序中名爲request.application的應用程序的現有會話。

如果您希望兩個或更多應用程序共享會話,請將masterapp設置爲主應用程序的名稱。