���⏪����µ���³���³���«����������
vkgtaro���µ�����я�����\³\���\���\�����������µ��𡯏����������������ď�����������������URL������»²¹��������� MyApp::Plugin::Session.pm ������������¹��Џ�����½��������ӏ�����½������µ���·���������·�����ď�¡����������̏����������Ï�𡭏������������������¹���쏢�쏢���������������Ï��«��¡�MyApp::Plugin::Session.pm ������ hidek ���µ�����я�����\³���¼\������̏��������²���������·���¹�����������¡�돪�½��쏪���쏢���������叢���䏩��ޏ��������������������������������·���������������������·�����ď��������
�돫������ԏ�����¹¹���·���������·������(09/06/08)
���⏪����µ���³���³����������������
�����������䏢¡�Catalyst��������돫�����������Web\��\��\���\�ޏ��¼\·\���\��я�������¡�\��쏢�¼\���\���\��\���\���µ����½����¼���²��я��«������\���\��\���\��я�����¾�����¢̏��¹��������¡��������«������\���\��\���\���\���\���\���\¹����������¼��������؏��¹����������̏���ߏ��̏����������������·�����ď�¡�����������¡�돪�²¼������\µ\���\���������»²¹���������¼��������؏��·�����������Ώ��������·�����ď�¡�
Catalyst ������\��쏢�¼\���\���\��\���\��я�����\���\���\���\�������ҏ�������������������������������������⏢���� Cookie �����Ң���Ï��������µ���»������
C::P::Session::DynamicExpiry������»���������������remember me
»������������������³��������������¡�
���³������µ����½������ Catalyst::Plugin::Session::DynamicExpiry ������»���������������¼������½½Ð�����������������������Ï��������¹��������¡�
���½���������½������ Catalyst::Plugin::Session::State::Cookie �����ҏ����̏����Џ��¹������¾���¹�����¡�expires������������2¼������������������������¹��¡�session ������ expires ��������¡�cookie ������ expires ���������¹��¡���²��я����� session cookie����\���\���\���\�������ҏ��������������������������������������Ώ�������⏢����cookie �������������·�����ď��«�����������ď�����������¡�cookie_expires ������ 0 ���������·���������·�����ď�¡�YAML������½��Џ��������������³�����я������������������������������������������¹��¡�
cookie ������ expire s������ 0 ����\���\���\���\�������ҏ�����������������������������������¡�session ������ expires ������30����̏��������¹��¡�\���\���\���\�������ҏ��������������������«������³«��������������쏢�¹��������¡�cookie ����������������\»\���\·\���\���ID���̏����Џ����������������ď�������¡��·�����ď�����\»\���\·\���\��я���³«»������µ���������������¹��¡�
��������������¡��³���³���«�����������������������������������䏪��������(*\��Ï��\)\���
�����������돢¡�\��쏢�¼\���\���\��\���\��я�����\���\��\���\���\���\���\���\¹����\���\��\���\������µ�����������ď����������¡�session_time_to_live \���\½\���\��������ҏ����������я����������²���������¹��¡�������������������������¡�session ������expires ������ 1800 ���������·�����ď��̏�¡�session_time_to_live \���\½\���\��������¡돫⏢ď�ԏ�����������������������¼«���³������������¹¹²������½���������¹��¡�
\���\��\��\���\������������������������������¡�session_time_to_live \���\½\���\��������� undef �����ҏ��������·���������¹��¡��³��������������¡�Catalyst::Plugin::Session::DynamicExpiry ��������¡��³���������������Ï�����¼��������؏����������������������������������������ď��������������¹��¡�if¾���·������������������������Џ����������������������������Ï��������·�����������²���������ޏ��������Ð���������ޏ��������»�����я�¡������á�����Ï���
Catalyst::Plugin::Session::DynamicExpiry.pm
�����ď�������¡��³���������������������������� cookie ������ expires ������ 0 �������������������������¹��¡�session ������2½µ����ӏ����� expires ������»����������������������������¹���̏�¡�\���\���\���\�������ҏ��������������������·�����������������ď�����·�����������·�����ď�����\»\���\·\���\��я��������������������������·���������������������¹��¡�¡��½���³��������¡�cookie ������ expires ������¼«��돫�����\��\���\��\���\��я�����������¹¹²������½���������·���������¹��¡�
�돪�����돢��������������������������¡�\��\���\»\¹������������ cookie ������ expires ���̏�������я��������·�����������Ï�����������¡�\»\\���\���\���\���쏢�����������������������������«������»�ߏ�������¡�½���²��я��������� cookie ������ expires ���̏����Ώ��������µ����������������2½µ����ӏ��������������������Ï�����������¹¹���·���������·������
MyApp::Plugin::Session.pm
�����������������Ώ�����������������¹��Џ�����½��������ӏ��������³�����я�����������������������¡�
Catalyst::Plugin::Session::State::Cookie ������������������������������ ¼«��돫�����\��\���\��\���\��я����ҏ�����¹��Џ�����������������¡�calculate_session_cookie_expires \���\½\���\������̏��������Ð�����������ď����������������������¡�MyApp::Plugin::Session ������������������»������������������������¹��¡��³��������������¡�cookie ������ expires ���� session ����������ޏ����������������Ï�����������¹¹���µ���������������¹��������¡�
���³���������������µ»��ӏ�¡��³������»��������������ҏ����Џ����ď��¹���³����������½Ð���������������·�����ď�¡�.������+.(\���\)���+.���
vkgtaro���µ�����я�����\³\���\���\�����������µ��𡯏����������������ď�����������������URL������»²¹��������� MyApp::Plugin::Session.pm ������������¹��Џ�����½��������ӏ�����½������µ���·���������·�����ď�¡����������̏����������Ï�𡭏������������������¹���쏢�쏢���������������Ï��«��¡�MyApp::Plugin::Session.pm ������ hidek ���µ�����я�����\³���¼\������̏��������²���������·���¹�����������¡�돪�½��쏪���쏢���������叢���䏩��ޏ��������������������������������·���������������������·�����ď��������
�돫������ԏ�����¹¹���·���������·������(09/06/08)
coderepos ����������ޏ����������������Ï����� plugin ���̏������������� http://coderepos.org/share/browser/lang/perl/Catalyst-Plugin-Session-DynamicExpiry-Cookie/trunk
���⏪����µ���³���³����������������
�����������䏢¡�Catalyst��������돫�����������Web\��\��\���\�ޏ��¼\·\���\��я�������¡�\��쏢�¼\���\���\��\���\���µ����½����¼���²��я��«������\���\��\���\��я�����¾�����¢̏��¹��������¡��������«������\���\��\���\���\���\���\���\¹����������¼��������؏��¹����������̏���ߏ��̏����������������·�����ď�¡�����������¡�돪�²¼������\µ\���\���������»²¹���������¼��������؏��·�����������Ώ��������·�����ď�¡�
Catalyst ������\��쏢�¼\���\���\��\���\��я�����\���\���\���\�������ҏ�������������������������������������⏢���� Cookie �����Ң���Ï��������µ���»������
C::P::Session::DynamicExpiry������»���������������remember me
»������������������³��������������¡�
1. \��쏢�¼\���\���\��\���\��я��̏��µ�����⏢����¾���¹�����¡�\���\���\���\�������ҏ����������������ď�����\���\��\���\���¾��؏����ӏ���������Џ���\»\���\·\���\��я�����30����̏���
2. \��쏢�¼\���\���\��\���\��я��̏�������⏢����¾���¹�����¡�\���\���\���\�������ҏ�����������������������\���\��\���\���¾��؏����ӡ돪�»�����\»\���\·\���\��я�����2½µ����ӏ���
���³������µ����½������ Catalyst::Plugin::Session::DynamicExpiry ������»���������������¼������½½Ð�����������������������Ï��������¹��������¡�
���½���������½������ Catalyst::Plugin::Session::State::Cookie �����ҏ����̏����Џ��¹������¾���¹�����¡�expires������������2¼������������������������¹��¡�session ������ expires ��������¡�cookie ������ expires ���������¹��¡���²��я����� session cookie����\���\���\���\�������ҏ��������������������������������������Ώ�������⏢����cookie �������������·�����ď��«�����������ď�����������¡�cookie_expires ������ 0 ���������·���������·�����ď�¡�YAML������½��Џ��������������³�����я������������������������������������������¹��¡�
session: expires: 1800 # »������������·���������«������������¾���¹��������� 7200 cookie_expires: 0 # »������������·���������«������������¾���¹��������� expires ��������������»���������������������
cookie ������ expire s������ 0 ����\���\���\���\�������ҏ�����������������������������������¡�session ������ expires ������30����̏��������¹��¡�\���\���\���\�������ҏ��������������������«������³«��������������쏢�¹��������¡�cookie ����������������\»\���\·\���\���ID���̏����Џ����������������ď�������¡��·�����ď�����\»\���\·\���\��я���³«»������µ���������������¹��¡�
��������������¡��³���³���«�����������������������������������䏪��������(*\��Ï��\)\���
�����������돢¡�\��쏢�¼\���\���\��\���\��я�����\���\��\���\���\���\���\���\¹����\���\��\���\������µ�����������ď����������¡�session_time_to_live \���\½\���\��������ҏ����������я����������²���������¹��¡�������������������������¡�session ������expires ������ 1800 ���������·�����ď��̏�¡�session_time_to_live \���\½\���\��������¡돫⏢ď�ԏ�����������������������¼«���³������������¹¹²������½���������¹��¡�
sub login : Local {
my ($self, $c) = @_;
if ( $c->authenticate($userinfo) ) {
if ( $c->req->param('remember_me') ) {
$c->session->{autologin} = 1;
$c->session_time_to_live( 60 * 60 * 24 * 14 ); # 2½µ�����
}
# ..snip..
}
}
\���\��\��\���\������������������������������¡�session_time_to_live \���\½\���\��������� undef �����ҏ��������·���������¹��¡��³��������������¡�Catalyst::Plugin::Session::DynamicExpiry ��������¡��³���������������Ï�����¼��������؏����������������������������������������ď��������������¹��¡�if¾���·������������������������Џ����������������������������Ï��������·�����������²���������ޏ��������Ð���������ޏ��������»�����я�¡������á�����Ï���
sub logout : Local {
my ($self, $c) = @_;
$c->logout();
if ( $c->session->{autologin} ) {
$c->session_time_to_live(undef);
delete $c->session->{autologin};
delete $c->session->{cookie_expires};
}
$c->res->redirect( $c->uri_for('/') );
}
Catalyst::Plugin::Session::DynamicExpiry.pm
sub calculate_extended_session_expires {
my $c = shift;
if ( defined(my $ttl = $c->session_time_to_live) ) {
$c->log->debug("Overridden time to live: $ttl") if $c->debug;
return time() + $ttl;
}
return $c->NEXT::calculate_extended_session_expires( @_ );
}
�����ď�������¡��³���������������������������� cookie ������ expires ������ 0 �������������������������¹��¡�session ������2½µ����ӏ����� expires ������»����������������������������¹���̏�¡�\���\���\���\�������ҏ��������������������·�����������������ď�����·�����������·�����ď�����\»\���\·\���\��я��������������������������·���������������������¹��¡�¡��½���³��������¡�cookie ������ expires ������¼«��돫�����\��\���\��\���\��я�����������¹¹²������½���������·���������¹��¡�
�돪�����돢��������������������������¡�\��\���\»\¹������������ cookie ������ expires ���̏�������я��������·�����������Ï�����������¡�\»\\���\���\���\���쏢�����������������������������«������»�ߏ�������¡�½���²��я��������� cookie ������ expires ���̏����Ώ��������µ����������������2½µ����ӏ��������������������Ï�����������¹¹���·���������·������
MyApp::Plugin::Session.pm
package MyApp::Plugin::Session;
use strict;
use warnings;
use parent 'Catalyst::Plugin::Session::DynamicExpiry';
sub calculate_session_cookie_expires {
my $c = shift;
if ( defined (my $ttl = $c->session_time_to_live) ) {
$c->log->debug("Overridden session cookie time to live: $ttl") if $c->debug;
$c->session->{cookie_expires} ||= ( time() + $ttl );
return $c->session->{cookie_expires};
}
return $c->NEXT::calculate_session_cookie_expires(@_);
}
1;
�����������������Ώ�����������������¹��Џ�����½��������ӏ��������³�����я�����������������������¡�
use Catalyst qw/
+MyApp::Plugin::Session
Session
Session::Store::DBIC
Session::State::Cookie
/;
Catalyst::Plugin::Session::State::Cookie ������������������������������ ¼«��돫�����\��\���\��\���\��я����ҏ�����¹��Џ�����������������¡�calculate_session_cookie_expires \���\½\���\������̏��������Ð�����������ď����������������������¡�MyApp::Plugin::Session ������������������»������������������������¹��¡��³��������������¡�cookie ������ expires ���� session ����������ޏ����������������Ï�����������¹¹���µ���������������¹��������¡�
���³���������������µ»��ӏ�¡��³������»��������������ҏ����Џ����ď��¹���³����������½Ð���������������·�����ď�¡�.������+.(\���\)���+.���
1. \��쏢�¼\���\���\��\���\��я��̏��µ�����⏢����¾���¹�����¡�\���\���\���\�������ҏ����������������ď�����\���\��\���\���¾��؏����ӏ���������Џ���\»\���\·\���\��я�����30����̏���
2. \��쏢�¼\���\���\��\���\��я��̏�������⏢����¾���¹�����¡�\���\���\���\�������ҏ�����������������������\���\��\���\���¾��؏����ӡ돪�»�����\»\���\·\���\��я�����2½µ����ӏ���
