Hallo, liebe Perlgemeinde,
Wie bereits in einem anderen Thread gesagt, versuche ich derzeit eine Session (zur Authentifizierung) mittels Plack::Middleware::Session einzurichten. Nur bleibt komischerweise $env->{psgix.session} bei mir immer leer.
Das ist mein PSGI Skript:
my $app = sub {
my $env = shift;
my $webapp = MyApp->new( QUERY => CGI::PSGI->new($env),
[bla bla bla]
'env' => $env
}
);
$webapp->run_as_psgi();
};
builder {
enable 'Session';
$app;
};
Und hier die inkrimierten Zeilen aus meiner CGI::Application Subclass (in cgiapp_prerun)
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');
}
}
Die Errormeldung ist:
QuoteError 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
Wenn ich die Zeilen in cgiapp_prerun auskommentiere, kann ich mir den Inhalt von $env anzeigen lassen. psgix.session ist leer.
Last edited: 2016-11-28 16:57:23 +0100 (CET)