通過瀏覽Auth和Session snaplets的代碼,我發現會話信息只存儲在客戶端(作爲cookie中的加密密鑰/值存儲)。會話的一種常用方法是僅將會話令牌存儲到客戶端,然後在服務器上的數據存儲中獲取剩餘的會話信息(到期日期,鍵/值對)。 Snap的方法的基本原理是什麼?爲什麼只有Snap Framework客戶端的會話?
對我來說,客戶端僅會話的缺點是:
的鍵/值存儲可能會大,並使用大量的帶寬。如果會話僅用於驗證用戶,這不是問題。
一個依靠客戶端過期/刪除cookie。如果服務器上至少有一部分會話沒有在設置cookie時有效地發送一個對永久有效的令牌。
後續問題是在Snap中實現服務器端會話的自然方式。理想情況下,我只想編寫/修改身份驗證和/或會話後端。
好的,謝謝,我明白。所以管理核心對於會話沒有特別的方法;它只是提供了界面,並且提供了一個示例來展示如何實現它並讓人們前往。我想我將能夠弄清楚如何實現持久cookie後端。 – dermoritz
@dermoritz你最終做到了嗎?我也希望能夠在註銷時使服務器端的會話cookie失效,並且我驚訝地發現cookieSessionManager似乎不支持這種cookie。 – rcreswick
@rcreswick,對不起。實際上我最終切換到了[servant](https://hackage.haskell.org/package/servant)(當然,你也必須手動進行這種會話處理)。 :) – dermoritz