alcgi:セッションマネージャ
AlSession セッションマネージャ
セッション変数とはHTTPリクエストをまたがって値を保持することができる変数で、セッションマネージャはその管理を行います。
- Key-Valueの型式で保存、参照が可能です。
- コントローラをまたいで使えるグローバルセッション変数と、コントローラごとに名前空間が違うコントローラローカルセッション変数があります。
- 保存できる値は、Rubyのプリミティブなデータタイプのみです。(実際にはユーザオブジェクトも保存できますが、正しく復帰できる保証ができません)
コントローラローカルセッション変数は、個々のコントローラ内でのみ有効なセッション変数です。異なるコントローラからはアクセスできません。一つのアプリケーション内でグローバルにアクセスできるAlSessionによるセッション変数とは異なり、スコープがコントローラ内のみに限定されます。他のコントローラと名前がぶつかることを心配する必要がありません。
グローバルセッション変数
AlSession[:sess_name] = "ABCDE" # 保存 s = AlSession[:sess_name] # 参照 AlSession.delete(:sess_name) # 消去
コントローラAとコントローラBがあった場合、上記は同じ変数として扱われる。
コントローラローカルセッション変数
session[:sess_name] = "ABCDE" # 保存 s = session[:sess_name] # 参照 session.delete(:sess_name) # 消去 session.delete_all() # 全消去
コントローラAとコントローラBがあった場合、上記は違う変数として扱われる。
構成変更
セッションクッキーによって識別されるセッションごとに、セッション変数を保存するためのファイルが作られます。通常は/tmp以下にALSESSID_***というファイルになります。
全体設定ファイル al_config.rb で、以下の動作モード変更が可能です。
AL_SESS_DIR
セッションをファイルに保存する場合の場所
デフォルトは /tmp
AL_SESS_TIMEOUT
セッションタイムアウト(秒)
デフォルトは、28800秒(8時間)。
この時間を超えてアクセスがない場合は、タイムアウトとしてセッション変数が自動削除されます。
alcgi/セッションマネージャ.txt · 最終更新: 2019/02/27 15:52 by hirohito