Rubyでセッション管理。source2007-07-21Rubyでセッション管理。tech今日はRubyでセッション管理をしたときの覚え書き。1.2.6■セッション・セッション管理とははてなによるとhttp://d.hatena.ne.jp/keyword/%A5%BB%A5%C3%A5%B7%A5%E7%A5%F3ユーザがあるサイトを訪れてからそこを離れるまでの一連の通信。HTTP自体にはユーザを識別する機能が存在しないので、Cookieなどを使用して同一人物か否かを識別する。はてなにログインしてからログアウトするまでのすべての操作は一つのセッションと考えられる。Rubyでは以下のようにセッションを管理する。Rubyリファレンスマニュアルによるとhttp://www.ruby-lang.org/ja/man/?cmd=view;name=cgi%2Fsessioncgiライブラリが提供するクッキーを使用してもいいが、このcgi/sessionを使用した方がよりわかりやすい。セッション情報はHashライクなインターフェースである。cgi/sessionライブラリを使えば、Cookieを知らずともハッシュを扱うかのごとくセッションを管理できるということです。内容は以下のようなもの。#{session['count']}"順を追って解説。例外処理を使ってセッションを取得する。#既存のセッションを取得。#既存のセッションがない場合はArgumentErrorを返す。nilend...Session.new(cgi,{"new_session"=>false})はSession.new(cgi)だけでも動作する。それぞれの違いを説明すると、Session.new(cgi,{"new_session"=>false})既存セッションがなければ新規セッションを張らず、ArgumentErrorを返すSession.new(cgi)既存セッションがなけらば新しいセッションを張る「後者の方が便利じゃないか?」と思うかもしれません。Fixationという危険があるそうです(詳しくは参考URLで)。前者を使うようにします。session.closeend...通常Session#closeメソッドはスクリプト終了時に自動的に実行されます。(finalizerというのを使っているらしい)しかしmod_rubyを使う場合は明示的にcloseメソッドを使ってセッションをクローズしなければなりません。これはmod_rubyではRubyスクリプト終了したように見えてもApache上でそのスクリプトを呼び出したmod_rubyモジュールが終了していないからだと思います。#{session['count']}"セッションはCookieを使っているので、かならずヘッダーを出力しなけらばならない。以上でRubyでのセッション管理の基本は終了。次回はセッションを利用したログイン処理を作ってみます。00:00Rubyでセッション管理。上司の私物をふんだくる部下。Reader)を無料にしましたスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。