#!/usr/bin/perl -- use Mojolicious::Lite; app->routes->under(sub{ my( $c ) = @_; return defined($c->session('userid')) })->get ( '/breaky' => 'index' ); app->routes->under(sub{ my( $c ) = @_; return defined($c->session('userid')) })->name('achey')->get ( '/breakyname' => 'index' ); # Authenticate based on name parameter under sub { my $c = shift; # Authenticated my $name = $c->param('name') || ''; return 1 if $name eq 'Bender'; # Not authenticated $c->render(template => 'denied'); return undef; }; # Only reached when authenticated get '/' => 'index'; app->start; __DATA__ @@ denied.html.ep You are not Bender, permission denied. @@ index.html.ep Hi Bender. #### $ perl mojo-under-breaky.pl get / [Wed Nov 25 14:53:52 2015] [debug] GET "/" [Wed Nov 25 14:53:52 2015] [debug] Routing to a callback [Wed Nov 25 14:53:52 2015] [debug] Rendering template "denied.html.ep" from DATA section [Wed Nov 25 14:53:52 2015] [debug] 200 OK (0.004443s, 225.073/s) You are not Bender, permission denied. $ perl mojo-under-breaky.pl get /?name=Bender [Wed Nov 25 14:54:17 2015] [debug] GET "/" [Wed Nov 25 14:54:17 2015] [debug] Routing to a callback [Wed Nov 25 14:54:17 2015] [debug] Rendering template "index.html.ep" from DATA section [Wed Nov 25 14:54:17 2015] [debug] 200 OK (0.004540s, 220.264/s) Hi Bender. $ perl mojo-under-breaky.pl get /breaky [Wed Nov 25 14:55:33 2015] [debug] GET "/breaky" [Wed Nov 25 14:55:33 2015] [debug] Routing to a callback [Wed Nov 25 14:55:33 2015] [debug] Your secret passphrase needs to be changed [Wed Nov 25 14:55:33 2015] [debug] Nothing has been rendered, expecting delayed response [Wed Nov 25 14:55:48 2015] [debug] Inactivity timeout Problem loading URL "http://127.0.0.1:2556/breaky": Premature connection close $ perl mojo-under-breaky.pl get /breakyname [Wed Nov 25 14:56:45 2015] [debug] GET "/breakyname" [Wed Nov 25 14:56:45 2015] [debug] Routing to a callback [Wed Nov 25 14:56:45 2015] [debug] Your secret passphrase needs to be changed [Wed Nov 25 14:56:45 2015] [debug] Nothing has been rendered, expecting delayed response [Wed Nov 25 14:57:00 2015] [debug] Inactivity timeout Problem loading URL "http://127.0.0.1:2565/breakyname": Premature connection close