セッション

Pyramid は Pylons と同じように Beaker セッションを使用しますが、それは デフォルトで有効になっていません。 Beaker セッションを使用するためには、 依存関係として “pyramid_beaker” パッケージを加えて、 main() 関数に 次の行を入れてください。

config.include("pyramid_beaker")

(依存関係を追加するために、 setup.py の中の requires リストにそれを 入れて、アプリケーションを再インストールしてください)

デフォルトの設定は in-memory セッションで、キャッシュはありません (と思います) 。INI ファイル、あるいは main() 関数の最初の settings 辞書に (Configurator がインスタンス化される前に) 設定を含めることで、 これをカスタマイズすることができます。 Akhet デモでは、Pylons 設定から 拝借した次の設定値で Beaker を設定します:

# Beaker cache
cache.regions = default_term, second, short_term, long_term
cache.type = memory
cache.second.expire = 1
cache.short_term.expire = 60
cache.default_term.expire = 300
cache.long_term.expire = 3600

# Beaker sessions
#session.type = file
#session.data_dir = %(here)s/data/sessions/data
#session.lock_dir = %(here)s/data/sessions/lock
session.type = memory
session.key = akhet_demo
session.secret = 0cb243f53ad865a0f70099c0414ffe9cfcfe03ac

Pylons のようにファイルベースのセッションを使用するためには、最初の3行 のセッション設定のコメントを外して、 “session.type = memory” 行を コメントアウトしてください。

“session.secret=” 設定をランダムな文字列に設定すべきです。それは セッションハイジャックを防ぐためのセッション Cookie にディジタル署名 するために使用されます。

Beaker は、いくつかの永続化バックエンドが利用可能です。メモリ、ファイル、 SQLAlchemy 、 memcached および Cookie (各セッション変数をクライアント側 Cookie に格納し、サイズ制限がある) が含まれます。最近最も人気のある デプロイバックエンドは memcached です。それは複数のプロセスとサーバの間 の共有ストレージとして動作して、メモリの速度と複数サーバクラスタにスケール する能力を提供します。Pylons はディスクベースのセッションをデフォルトに しています。

Beaker は (request.session でアクセスされる) Pyramid の内蔵セッション・ インタフェースにプラグインされます。それを辞書のように使用してください。 生の Beaker セッションと異なり、何かを変更する度に session.save() を呼ぶ必要はありません。しかし、もしセッション内で mutable な アイテムを 修正した場合は、 session.changed() を呼ぶ必要があります。

Pyramid セッションインタフェースにはさらにいくつかの追加機能があります。 次のページビューに表示する「フラッシュメッセージ」を格納することができます。 これは、成功/失敗メッセージを格納してリダイレクトしたい場合に有用です。 メッセージは目標ページに表示されるでしょう。この機能は webhelpers.flash に基づきます。それは Pylons の特殊グローバル変数に 依存するので、 Pyramid と互換性がありません。また、セキュアフォーム・ トークンを設定する方法もあります。それはセッションのそれ以前にリクエスト されたフォーム以外からの (したがって、クロスサイト・フォージェリ(偽装) 攻撃かもしれない) フォーム送信を防ぎます。 (Note: フラッシュメッセージ は Adobe Flash ムービープレーヤーとは関係ありません。)

これらのすべての機能および他の機能の API については Pyramid マニュアル の Sessions 章を参照してください。 Beaker マニュアルは バックエンドを設定する上で役に立つでしょう。 Akhet デモは Pyramid で Beaker を使用する例で、フラッシュメッセージを持っています。

Note: 私がセッションを有効にしている間 debug ツールバーの中で時々例外が 起こりました。それはディストリビューション間のコードの不一致によるもの かもしれません。これがあなたの所でも起きる場合、この問題が解決されるまで ツールバーを無効にすることができます。

Previous topic

静的ファイル

Next topic

デプロイ