セッション状態を維持するには、基本的に2つの方法があります。サーバー上またはクライアント上です。
サーバー側のアプローチでは、セッションデータをファイル、データベース、またはサーバー上のメモリに保存し、IDを割り当てます。このセッションIDはクライアントに送信され、通常はCookieに格納されます(URLに埋め込むこともできます)。次に、各リクエストで、クライアントのセッションIDが読み込まれ、Webアプリケーションがセッションデータをサーバーに格納されている場所からロードするために使用されます。この方法では、クライアントはセッションデータにアクセスすることはできませんし、それを改ざんすることはできませんが、悪意のあるクライアントによる古いセッションIDの使用によるセッションハイジャックの防御が欠点です。これは今日のほとんどのWebフレームワークとアプリケーションで使用されているモデルです。
もう1つの方法は、セッションデータをクッキー内のクライアント側に完全に保存することです。このアプローチの欠点は、クライアントがデータを見たり改ざんしたりする可能性があることです。そのため、不正な改ざんを防ぐために、データの署名と暗号化に注意する必要があります。これは良い秘密鍵を持っているところです。また、セッションハイジャックの心配もありません。
Pylonsはセッションデータを完全に保存するように設定できるBeakerセッションを使用しますon the client side。だからこそ秘密鍵が必要です。
CherryPyはセッションデータのみをサーバーに保存し、セッションIDを持つCookieをユーザーに送信するので、クライアントはセッションデータを見ることはできず、改ざんできません。ファイルを使用するように設定することも、すべてをメモリに保存することもできます。
個人的には、私はCherryPyで使用されているアプローチを好みます。これはWebの大部分で使用されているアプローチと同じですから。安全性が高く、暗号化や鍵を気にせずに、サーバー上で実行されている他のアプリケーションとセッションデータを簡単に共有できます。