Hello !!
im new to dancer adn im really enjoying hwo easy and simple it is, im actuaally testing some examples on the cookbook and soms
simple functions and encountered a strange behaviour i cannot understand. Heres the code.
#!/usr/bin/env perl
use Dancer;
use MyApp01;
set port => 9001;
before sub {
if (! session('user') && request->path_info !~ m{^/login}) {
redirect('/login');
}
};
get '/login' => sub {
# Display a login page; the original URL they requested is available as
# vars->{requested_path}, so could be put in a hidden field in the form
template 'login', { path => vars->{requested_path} };
};
post '/login' => sub {
# Validate the username and password they supplied
if (params->{username} eq 'bob' && params->{password} eq 'mierda') {
session user => params->{user};
redirect params->{path} || '/';
} else {
redirect '/login?failed=1';
}
};
get '/logout' => sub {
session->destroy;
set_flash('You are logged out.');
redirect '/login';
};
get '/' => sub {
if (session('user')) {
redirect('/login');
} else {
send_file '/o.html' ;
}
};
get '/hello/:name/peter' => sub {
return "Hi there " . params->{name};
};
Allmos as posted on the dancer cookbook, login redirection works perfect, except when i request o.html, no matter if i
explicit test if the user is logged, the file is shown on the browser. Its a simple html form, and when i click on submit im
correctly redirected to /login but why is the first request not blocked ? Did i miss something on the manual about static files
and session management ?
Thank you
Javi