- 论坛徽章:
- 0
|
Dancer::Session
思路:只有需要写入时新建
步骤:
在write中添加参数:create_ifno
- sub write {
- my ($class, $key, $value) = @_;
- return unless $key;
- $key eq 'id' and croak 'Can\'t store to session key with name "id"';
- my $session = get_current_session(0,create_ifno=>1);
-
- $session->set_value($key, $value);
- # TODO : should be moved as an "after" filter
- $session->flush unless $session->is_lazy;
- return $value;
- }
复制代码 get_current_session 中选择性新建
- sub get_current_session {
- shift;
- my %p = @_;
- my $sid = engine->read_session_id;
- my $session = undef;
- my $class = ref(engine);
- $session = $class->retrieve($sid) if $sid;
- if ($p{create_ifno}) {
- ...
复制代码 read 修复可能的错误
- sub read {
- my ($class, $key) = @_;
- return unless $key;
- my $session = get_current_session();
- return $session->get_value($key) if(defined $session);
- }
复制代码
|
|