get '/' => needs login => sub { # ... }; get '/login' => sub { template 'login' }; post '/login' => sub { my $user = body_parameters->get('uname'); if (is_valid($user, body_parameters->get('psw'))) { session(user => $user); redirect('/') } else { template index => {error => 'Wrong username or password'} } };