TurboGears – Cookie 和 Session



通常需要儲存與使用者瀏覽器關聯的簡單瀏覽資料。Session 是最常用的技術。Session 代表不需要以更持久的方式(如磁碟檔案或資料庫)儲存的資料。

但是,TurboGears 中的 Session 資料可以由檔案系統、資料庫或雜湊 Cookie 值支援。少量 Session 資料通常儲存在 Cookie 中,但對於大量 Session 資料,使用 MemCache。

MemCache 是一個系統級守護程序。它提供對快取資料的快速訪問,並且具有極強的可擴充套件性。但是,它僅供在安全伺服器上使用,因此必須由系統管理員維護和保護。

Session 管理中的 Beaker

TurboGears 使用 Beaker 進行 Session 管理。Gearbox 快速啟動的專案預設配置為使用雜湊 Cookie 儲存 Session 資料。

每次客戶端連線時,Session 中介軟體(Beaker)都會使用配置檔案中定義的 Cookie 名稱檢查 Cookie。如果找不到 Cookie,它將在瀏覽器中設定。在所有後續訪問中,中介軟體都會找到 Cookie 並使用它。

為了啟用 Session 管理,應透過以下匯入語句將 Session 類合併到專案中:

from tg import session

要在 Session 變數中儲存資料:

session[‘key’] = value
session.save()

檢索 Session 變數:

return session[‘key’]

請注意,您需要顯式儲存 Session,以便您的鍵儲存在該 Session 中。

Session 物件的 delete() 方法將擦除所有使用者 Session:

session.delete()

儘管在任何給定的生產環境中刪除所有使用者 Session 並不常見,但您通常會在完成可用性或功能測試後執行此操作以進行清理。

下面是一個簡單的示例來演示 Session。RootController 類有一個 setsession() 方法,它設定一個 Session 變數。

from hello.lib.base import BaseController
from tg import expose, session
class RootController(BaseController):
   
   @expose()
   def setsession(self):
      session['user'] = 'MVL'
      session.save()
      
      str = "<b>sessionVariable set to "+session['user'] 
      str = str+"<br><a href = '/getsession'>click here to retrieve</a></b>"
      return str
   
   @expose()
   def getsession(self):
      return "<b>value of session variable retrieved " +session['user'] +"</b>"

輸入 https://:8080/setsession

Session

瀏覽器中的連結指向 https://:8080/getsession,它檢索並顯示 Session 變數:

Variable
廣告