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