[cgiapp] Plack::Session and CGI::Application

max.augsburg at gmx.de max.augsburg at gmx.de
Mon Nov 28 11:22:01 EST 2016


Dear Rhesa,

Thank you very much. This really helped me very much. Nevertheless it 
is curious that a manual creation of Plack::Session is necessary. I 
will post because of that a report to the Plack::Middlewares::Session 
team the next weeks. Perhaps they know why $env->{'psgix.session'} is 
not created automatically.

Best wishes and again thank you very very much,
Max


Am Montag, den 28.11.2016, 14:52 +0100 schrieb Rhesa Rozendaal:
> Hi Max,
> 
> I have a method in my app that creates a plack session like so:
> 
> use Plack::Session;
> sub session {
>    my $self = shift;
>    $self->{__my_plack_session} ||= Plack::Session->new($self->query-
> > env)
> }
> 
> 
> I can then use it like this:
> 
>    $self->session->get('login');
> 
> Hope that helps,
> 
> Rhesa
> 
> On 11/27/2016 11:27 PM,  max.augsburg at gmx.dewrote:
> > Hello all,
> > 
> > I don't know whether I am completely stumped but I didn't get 
> > Plack::Middleware::Session to work.
> > 
> > My simple PSGI script is as follow:
> > 
> > my $app = sub {
> >         my $env = shift;
> >         my $webapp = PLogPSGI->new( QUERY => CGI::PSGI->new($env),
> >                 [bla bla bla]
> >                 'env' => $env
> >                 }
> >                 );
> >         $webapp->run_as_psgi();
> > };
> > builder {
> >         enable 'Session';
> >         $app;
> > };
> > 
> > and my PLogPSGI module looks for example in cgiapp_prerun as
> > follows:
> > 
> > sub cgiapp_prerun {
> >         my $self = shift;
> >         my $current_runmode = shift;
> >         # initialize the session
> >         my $q =$self->query;
> >         my $env = $q->env;
> >         my $session = $env->{'psgix.session'};
> >         # Check the Login Status and if the user is logged in,
> > start
> > the chosen action
> >         my $login = $session->get('login');
> >         unless ($login) {
> >                 $self->prerun_mode('show_login') if
> > ($current_runmode
> > ne 'login_cb');
> >         }
> > }
> > 
> > I get the following error:
> > 
> > Error executing class callback in prerun stage: Can't call method 
> > "get" on unblessed reference at /home/maximilian/public_html/cgi- 
> > bin/./lib/PLogPSGI.pm line 63. at /home/maximilian/public_html/cgi-
> > bin/extlib/lib/perl5/CGI/Application.pm line 2449
> > 
> > If I comment out the cgiapp_prerun lines I can look at the PSGI 
> > hash $env. $env->{'psgix.session'} is empty...
> > 
> > I saw Ron Savages introduction (
> >  http://savage.net.au/Perl/html/session.management.with.plack.html)
> > But unfortunately it doesn't help me.
> > 
> > Thanks in advance,
> > Max
> > 
> > #####  CGI::Application community mailing list  ################ 
> > ##                                                            ## 
> > ##  To unsubscribe, or change your message delivery options,  ## 
> > ##  visit:  http://lists.openlib.org/mailman/listinfo/cgiapp    ## 
> > ##                                                            ## 
> > ##  Web archive:   http://lists.openlib.org/pipermail/cgiapp/   ## 
> > ##  Wiki:          http://cgiapp.erlbaum.net/                 ## 
> > ##                                                            ## 
> > ################################################################
> > 
> > 
> 
> 
> #####  CGI::Application community mailing list  ################ ##
>                                                           ## ##  To
> unsubscribe, or change your message delivery options,  ## ##  visit: 
> http://lists.openlib.org/mailman/listinfo/cgiapp    ## ##
>                                               ## ##  Web archive:
> http://lists.openlib.org/pipermail/cgiapp/   ## ##  Wiki: 
> http://cgiapp.erlbaum.net/                 ## ##
>                                        ##
> ################################################################


More information about the cgiapp mailing list