CGI::Sessionモジュール
CGI::Sessionモジュール
ユーザー認証後のセッション管理を行うために今回CGI::Sessionモジュールを勉強しましたので自分の理解の範囲で書いてみたいと思います。
ログイン後にUserIDを常にサーバーで保持する必要があり、txtファイルを作ってやるのもどうなんだ。。と思ったので。
今回使ったセッションの流れを書いてみると。
1 ID・パスワード認証
認証成功(Y/N)
(Y):SessionIDを作成 CookieにSessionIDを渡し、UserIDをサーバのセッションフォルダに格納する。②へ
(N):再ログイン画面を表示
2 ログイン後、各種設定変更画面
CookieにSessionIDが存在する(Y/N)
___ (Y):SessionIDは有効である?(Y/N) | |
___(Y):正常に画面遷移を行う | |
___(N):Sessionエラー | |
___ (N)Sessionエラー |
かなりわかりにくい図ですが
1 CookieのセッションID存在判定
2 セッションID有効判定
この2つでセッションを管理しています。
今回とても詰まったところは、sessionフォルダのアクセス権です。
ここの所有者をapacheにしないとセッションが作成されても保存されず全てSessionErrorになります。
主要なメソッド
use CGI::Session; #第1引数:データソース名 #第2引数:セッションIDもしくは$cgiなどのparamやcookieメソッドをもつオブジェクト #第3引数:セッションを格納するフォルダ $session=CGI::Session->new(undef,$cgi,{Directory=>'/var/session/'}); #セッションに有効なIDを返す $session->id(); #セッションにパラメータを追加 $session->param('name','hogehoge'); #パラメータを読み出す($nameはhogeghoge) $name=$session->param('name') #sessionの有効期限を1年間に設定 $session->expire("+1y"); #sessionを削除する $session->delete();