NAME

Egg::Plugin::SessionKit - Plugin that manages session.

SYNOPSIS

use Egg qw/ SessionKit /;

__PACKAGE__->mk_eggstartup(
  .......
  ...
  plugin_session => {
    key_name           => 'ss',
    verifi_agent       => 1,
    ipaddr_check_level => 1,
    component=> [qw/ Base::DBI Bind::Cookie Store::Base64 /],
    },
  );

# ƒZƒbƒVƒ‡ƒ“ƒf�[ƒ^‚ðŠl“¾�B
my $session = $e->session;

$session->{hoge}= 'in data';

# Œ»�݂̃ZƒbƒVƒ‡ƒ“‚h‚c‚ðŽQ�Æ�B
$session->session_id;

DESCRIPTION

ƒZƒbƒVƒ‡ƒ“ŠÇ—�‚ð�s‚¤ˆ×‚̃vƒ‰ƒOƒCƒ“‚Å‚·�B

* ˆÈ‘O‚̃o�[ƒWƒ‡ƒ“‚Æ‚ÍŽd—l‚ªŽáŠ±•Ï‚Á‚Ä‚¢‚Ü‚·�B

* ‚±‚̃vƒ‰ƒOƒCƒ“‚Í Egg::Plugin::IxHash ‚ðŒp�³‚µ‚Ä‚¢‚Ü‚·‚Ì‚Å�AEgg::Plugin::IxHash ‚ð•Ê‚Ƀ��[ƒh‚·‚é•K—v‚Í‚ ‚è‚Ü‚¹‚ñ�B

CONFIGRATION

'plugin_session' ‚É‚±‚̃‚ƒWƒ…�[ƒ‹‚Ì�Ý’è‚ð�s‚Á‚ĉº‚³‚¢�B

key_name

ƒNƒbƒL�[‚È‚Ç‚ÉŽg—p‚·‚éƒZƒbƒVƒ‡ƒ“‚h‚cŽæ“¾—p‚̃pƒ‰ƒ��[ƒ^‚Ì–¼‘O�B

plugin_session=> {
  key_name=> 'session_id',
  ...
  },

ƒfƒtƒHƒ‹ƒg‚Í ss ‚Å‚·�B

verifi_agent

ˆÈ‘O‚Æ“¯‚¶ƒZƒbƒVƒ‡ƒ“‚ª—v‹�‚³‚ê‚Ä‚à�AHTTP_USER_AGENT ‚ªˆê’v‚µ‚È‚¯‚ê‚ΕʃZƒbƒVƒ‡ƒ“‚Æ‚µ‚Ĉµ‚¢‚Ü‚·�B

plugin_session=> {
  verifi_agent=> 1,
  ...
  },

ƒfƒtƒHƒ‹ƒg‚Í–¢’è‹`‚Å‚·�B

ipaddr_check_level

ˆÈ‘O‚Æ“¯‚¶ƒZƒbƒVƒ‡ƒ“‚ª—v‹�‚³‚ꂽŽž‚Ì‚h‚oƒAƒhƒŒƒX‚ÆŒ»�Ý‚Ì‚h‚oƒAƒhƒŒƒX‚̈ê’v�«‚ðƒ`ƒFƒbƒN‚µ‚Ü‚·�B ˆê’v�«‚ª–³‚¯‚ê‚ΕʃZƒbƒVƒ‡ƒ“‚Æ‚µ‚Ĉµ‚¢‚Ü‚·�B

1 –”‚Í C ‚ð�Ý’è‚·‚é‚Æ CƒNƒ‰ƒX ‚̃`ƒFƒbƒN�A1 –”‚Í C ˆÈŠO‚Ì•¶Žš‚ð�Ý’è‚·‚é‚ÆŠ®‘Sˆê’v‚Ń`ƒFƒbƒN‚µ‚Ü‚·�B 0 –”‚Í –¢’è‹` ‚È‚ç‘S‚Ä“¯ˆêƒZƒbƒVƒ‡ƒ“‚Æ‚µ‚Ĉµ‚¢‚Ü‚·�B

plugin_session=> {
  ipaddr_check_level=> 1,
  ...
  },

ƒfƒtƒHƒ‹ƒg‚Í–¢’è‹`‚Å‚·�B

component

‚±‚̃ZƒbƒVƒ‡ƒ“ƒ‚ƒWƒ…�[ƒ‹‚ª“Ç‚Ý�ž‚ÞŠeƒRƒ“ƒ|�[ƒlƒ“ƒg�Eƒ‚ƒWƒ…�[ƒ‹‚ðŽw’肵‚Ü‚·�B

ƒfƒtƒHƒ‹ƒg‚Í‚ ‚è‚Ü‚¹‚ñ‚Ì‚Å�A“Ç‚Ý�ž‚ÞƒRƒ“ƒ|�[ƒlƒ“ƒg‚Í‘S‚Ä�Ý’è‚·‚é•K—v‚ª‚ ‚è‚Ü‚·�B

�Ý’è‚Í•K‚¸ ARRAY ƒŠƒtƒ@ƒŒƒ“ƒX‚Å�s‚¢�A�Å�‰‚Ì’l‚Í BaseŒnƒRƒ“ƒ|�[ƒlƒ“ƒg‚ð�Ý’è‚·‚鎖�B

Base ŒnƒRƒ“ƒ|�[ƒlƒ“ƒgˆÈ�~‚Í“Á‚É�‡”Ô‚É�S‚è‚Ü‚¹‚ñ‚ª�AStoreŒn ‚Æ BindŒn ‚̃Rƒ“ƒ|�[ƒlƒ“ƒg‚Ì �ݒ肪•K‚¸•K—v‚É‚È‚è‚Ü‚·�B IssueŒn ƒRƒ“ƒ|�[ƒlƒ“ƒg‚Í�È—ª‚Å‚«‚Ü‚·�B

plugin_session=> {
  ...
  component=> [qw/ Base::FileCache Bind::Cookie Store::Base64 /],
  },

‚Ü‚½Še’l‚ɃIƒvƒVƒ‡ƒ“‚ð�Ý’è‚·‚é�ê�‡‚ÍŽŸ‚̂悤‚ÈŠ´‚¶‚É‚È‚è‚Ü‚·�B

plugin_session=> {
  ...
  component=> [
    [ 'Base::FileCache' => {
      namespace  => 'sessions',
      cache_root => '/path/to/cache',
      ...
      } ],
    qw/ Bind::Cookie Store::Base64 /,
    ],
  },

plugin_session=> {
  ...
  component=> [
    [ 'Base::FileCache' => {
      namespace  => 'sessions',
      cache_root => '/path/to/cache',
      ...
      } ],
    [ 'Bind::Cookie' => {
      cookie_name   => 'sid',
      cookie_path   => '/',
      ...
      } ],
    'Store::Base64',
    ],
  },

ticket

plugin_session=> {
  ...
  ticket => {
    param_name => 'my_ticket',
    },
  },

ˆêŽžƒ`ƒPƒbƒg‚ðƒtƒH�[ƒ€‚©‚çŽó‚¯Žæ‚éˆ×‚Ì–¼�Ì‚ð param_name ‚Å�ݒ肵‚Ü‚·�B

ƒfƒtƒHƒ‹ƒg‚Í ticket ‚Å‚·�B

METHODS

session

ƒZƒbƒVƒ‡ƒ“�EƒIƒuƒWƒFƒNƒg‚ð•Ô‚µ‚Ü‚·�B

my $session= $e->session;

’l‚ðƒZƒbƒg‚·‚é�ê�‡‚Í•�’Ê‚É‘ã“ü‚·‚ê‚Ηǂ¢‚Å‚·�B

$session->{data}= 'foo';

ticket_id

1 ‚ð—^‚¦‚é‚ƈꎞƒ`ƒPƒbƒg‚h‚c‚ð�¶�¬‚µ‚Ä•Ô‚µ‚Ü‚·�B

my $ticket_id= $e->ticket_id(1);

‚±‚ê‚ÍŽŸ‚̂悤‚ȃR�[ƒh‚Æ“¯‚¶‚Å‚·�B

my $ticket_id= $e->session->{session_ticket}= $e->session->create_id;

0 ‚ð—^‚¦‚é‚ƈꎞƒ`ƒPƒbƒg‚h‚c‚𖳌ø‚É‚µ‚Ü‚·�B

$e->ticket_id(0);

ticket_check

ˆêŽžƒ`ƒPƒbƒg‚h‚c‚ªƒZƒbƒVƒ‡ƒ“‚É•Û‘¶‚³‚ê‚Ä‚¢‚é‚h‚c‚ƈê’v‚·‚ê‚Î true ‚ð•Ô‚µ‚Ü‚·�B

if ($e->ticket_check($e->req->param('ticket'))) {
   Ticket ID is corresponding.
} else {
   Ticket ID is a disagreement.
}

ˆø�”‚ð�È—ª‚·‚é‚Æ param_name ‚É�ݒ肵‚½ƒNƒGƒŠ�[‚Ì’l‚ð”äŠr‘Î�Æ‚É‚µ‚Ü‚·�B

if ($e->ticket_check) {
   Ticket ID is corresponding.
} else {
   Ticket ID is a disagreement.
}

session_close

ƒZƒbƒVƒ‡ƒ“‚𖾎¦“I‚ɃNƒ��[ƒY‚µ‚Ü‚·�B

* ‚±‚ê‚Í’Ê�í _finalize ‚ŌĂ΂ê‚éˆ×�AƒAƒvƒŠƒP�[ƒVƒ‡ƒ“‘¤‚ŃR�[ƒ‹‚·‚é•K—v‚Í‚ ‚è‚Ü‚¹‚ñ�B

HANDLER_METHODS

new

ƒZƒbƒVƒ‡ƒ“ƒnƒ“ƒhƒ‰�[ƒIƒuƒWƒFƒNƒg‚ð•Ô‚µ‚Ü‚·�B

my $session= $e->session;

session_id

Œ»�݃Zƒbƒg‚³‚ê‚Ä‚¢‚éƒZƒbƒVƒ‡ƒ“‚h‚c‚ð•Ô‚µ‚Ü‚·�B

my $session_id= $e->session->session_id;

session_ticket

Œ»�݃Zƒbƒg‚³‚ê‚Ä‚¢‚éˆêŽžƒ`ƒPƒbƒg‚h‚c‚ð•Ô‚µ‚Ü‚·�B

my $ticket_id= $e->session->session_ticket || undef;

access_time_now

ƒZƒbƒVƒ‡ƒ“‚ðƒI�[ƒvƒ“‚µ‚½Žž‚Ì time ’l‚ð•Ô‚µ‚Ü‚·�B

access_time_old

‘O‰ñƒZƒbƒVƒ‡ƒ“‚ðƒI�[ƒvƒ“‚µ‚½Žž‚Ì access_time_now ‚Ì’l‚ð•Ô‚µ‚Ü‚·�B

context

ƒZƒbƒVƒ‡ƒ“‚Ì TieHash ƒIƒuƒWƒFƒNƒg‚ð•Ô‚µ‚Ü‚·�B

session

ƒZƒbƒVƒ‡ƒ“‚Ì TieHash Ž©�g‚ð•Ô‚µ‚Ü‚·�B

e

ƒvƒ�ƒWƒFƒNƒg�EƒIƒuƒWƒFƒNƒg‚ð•Ô‚µ‚Ü‚·�B

conf

ƒZƒbƒVƒ‡ƒ“‚̃Rƒ“ƒtƒBƒOƒŒ�[ƒVƒ‡ƒ“‚ð•Ô‚µ‚Ü‚·�B

attr

ƒZƒbƒVƒ‡ƒ“ŠÖ˜A‚ÌŠeŽí‘®�«“™‚ð•Ô‚µ‚Ü‚·�B(HASHƒŠƒtƒ@ƒŒƒ“ƒX)

is_handler

ƒZƒbƒVƒ‡ƒ“‚Ì TieHash ‚ÉŽg‚í‚ê‚Ä‚¢‚éƒnƒ“ƒhƒ‰�[–¼‚ð•Ô‚µ‚Ü‚·�B

is_update

ƒZƒbƒVƒ‡ƒ“‚ɉ½‚©’l‚ª“ü‚ê‚ç‚ê‚Ä�X�V‚·‚é•K—v‚ª‚ ‚ê‚Î true ‚ð•Ô‚µ‚Ü‚·�B

is_newentry

Œ»�݂̃ZƒbƒVƒ‡ƒ“‚ª�V‹KƒZƒbƒVƒ‡ƒ“‚h‚c‚É‚æ‚é‚à‚Ì‚È‚ç true ‚ð•Ô‚µ‚Ü‚·�B

create_id ([ID_LENGTH])

SHA1 ‚É‚æ‚胆ƒj�[ƒN‚È‚h‚c‚ð�¶�¬‚µ‚Ü‚·�B

‚±‚̃�ƒ\ƒbƒh‚Í IssueŒn ƒRƒ“ƒ|�[ƒlƒ“ƒg‚É‚æ‚Á‚ăI�[ƒo�[ƒ‰ƒCƒh‚³‚ê‚鎖‚ª‚ ‚è‚Ü‚·�B

my $id= $session->create_id(32);

* ID_LENGTH ‚̃fƒtƒHƒ‹ƒg‚Í 32 ‚Å‚·‚ª�ASHA1 Ž©�g‚Í’Ê�í40Œ…‚ð•Ô‚µ‚Ü‚·‚Ì‚Å 40 ˆÈ�ã‚ðŽw’肵‚Ä‚à –³ˆÓ–¡‚Å‚·�B

change

�V‚µ‚¢‚h‚c‚ŕʃZƒbƒVƒ‡ƒ“‚É•Ï�X‚µ‚Ü‚·�Bƒf�[ƒ^‚Í‘S‚ĈȑO‚Ì‚à‚Ì‚ðˆø‚«Œp‚¬‚Ü‚·�B

clear

�V‚µ‚¢‚h‚c‚ŕʃZƒbƒVƒ‡ƒ“‚Å�‰Šú‰»‚µ‚Ü‚·�Bƒf�[ƒ^‚Í‘S‚ăNƒŠƒA‚³‚ê‚Ü‚·�B

delete ([KEY_NAME])

Žw’肵‚½ƒL�[‚̃f�[ƒ^‚ð�í�œ‚µ‚Ü‚·�B

$session->delete('fooo');

‚±‚ê‚ÍŽŸ‚̃R�[ƒh‚Æ“¯‚¶‚Å‚·�B

delete($session->{fooo});

TIEHASH_HANDLER

‚±‚ê‚ç‚̃�ƒ\ƒbƒh‚̓AƒvƒŠƒP�[ƒVƒ‡ƒ“‘¤‚©‚ç’¼�ڌĂÑ�o‚³‚ê‚鎖‚ð‘z’肵‚Ä‚¢‚Ü‚¹‚ñ�B

e

ƒvƒ�ƒWƒFƒNƒgƒIƒuƒWƒFƒNƒg‚ð•Ô‚µ‚Ü‚·�B

conf, mod_conf, config

ƒRƒ“ƒtƒBƒOƒŒ�[ƒVƒ‡ƒ“‚ð•Ô‚µ‚Ü‚·�B

attr

ƒZƒbƒVƒ‡ƒ“ŠÖ˜A‚ÌŠeŽí‘®�«“™‚ð•Ô‚µ‚Ü‚·�B(HASHƒŠƒtƒ@ƒŒƒ“ƒX)

session_id

ƒZƒbƒVƒ‡ƒ“‚h‚c‚ð•Ô‚µ‚Ü‚·�B

new_entry

Œ»�݂̃ZƒbƒVƒ‡ƒ“‚ª�V‹KƒZƒbƒVƒ‡ƒ“‚h‚c‚É‚æ‚é‚à‚Ì‚È‚ç true ‚ð•Ô‚µ‚Ü‚·�B

agent_key_name

HTTP_USER_AGENT ‚ª•Û‘¶‚³‚ê‚Ä‚¢‚éƒZƒbƒVƒ‡ƒ“‚̃L�[‚ð•Ô‚µ‚Ü‚·�B

addr_key_name

REMOTE_ADDR ‚ª•Û‘¶‚³‚ê‚Ä‚¢‚éƒZƒbƒVƒ‡ƒ“‚̃L�[‚ð•Ô‚µ‚Ü‚·�B

initialize

ƒZƒbƒVƒ‡ƒ“ƒf�[ƒ^‚ð�‰Šú‰»‚µ‚Ü‚·�B

normalize

ƒZƒbƒVƒ‡ƒ“‚É•Û‘¶‚·‚é�‰Šúƒf�[ƒ^‚ðƒZƒbƒgƒAƒbƒv‚µ‚Ü‚·�B

create_session_id

�V‚µ‚¢ƒZƒbƒVƒ‡ƒ“‚h‚c‚ð”­�s‚µ‚Ü‚·�B

issue_id

ƒZƒbƒVƒ‡ƒ“‚h‚c‚ð”­�s‚µ‚Ü‚·�B ‚±‚̃�ƒ\ƒbƒh‚Í IssueŒn ƒRƒ“ƒ|�[ƒlƒ“ƒg‚æ‚Á‚ăI�[ƒo�[ƒ‰ƒCƒh‚³‚ê‚Ü‚·�B

issue_check_id

Žó‚¯Žæ‚Á‚½‚h‚c‚Ì�‘Ž®‚ðƒ`ƒFƒbƒN‚µ‚Ü‚·�B

commit_ok

ƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“�ˆ—�Žž‚ׂ̈̃_ƒ~�[ƒ�ƒ\ƒbƒh

insert

�V‚µ‚¢ƒZƒbƒVƒ‡ƒ“‚ð•Û‘¶‚·‚éˆ×‚̃�ƒ\ƒbƒh

update

ƒZƒbƒVƒ‡ƒ“‚ð�X�V‚·‚éˆ×‚̃�ƒ\ƒbƒh

restore

ƒZƒbƒVƒ‡ƒ“‚ð“Ç‚Ý�ž‚ވׂ̃�ƒ\ƒbƒh

set_bind_data

ƒZƒbƒVƒ‡ƒ“‚h‚c‚ð Cookie “™‚ɃZƒbƒg‚·‚éˆ×‚̃�ƒ\ƒbƒh

get_bind_data

ƒZƒbƒVƒ‡ƒ“‚h‚c‚ð Cookie “™‚©‚瓾‚éˆ×‚̃�ƒ\ƒbƒh

startup

�‰ŠúƒZƒbƒgƒAƒbƒv—p‚̃�ƒ\ƒbƒh

SEE ALSO

Class::C3, Digest::SHA1, Class::Accessor::Fast, Tie::Hash, Egg::Plugin::IxHash, Egg::Release,

AUTHOR

Masatoshi Mizuno <lushe@cpan.org>

COPYRIGHT

Copyright (C) 2007 by Bee Flag, Corp. <http://egg.bomcity.com/>, All Rights Reserved.

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.8.6 or, at your option, any later version of Perl 5 you may have available.

1 POD Error

The following errors were encountered while parsing the POD:

Around line 32:

Non-ASCII character seen before =encoding in 'ƒZƒbƒVƒ‡ƒ“ƒf�[ƒ^‚ðŠl“¾�B'. Assuming CP1252