Mojolicious::Plugin::HttpBasicAuth - Http-Basic-Authentication implementation for Mojolicious
# in your startup
$self->plugin(
'http_basic_auth', {
validate => sub {
my $c = shift;
my $loginname = shift;
my $password = shift;
my $realm = shift;
return 1 if($realm eq 'Evergreen Terrace' && $loginname eq 'Homer' && $password eq 'Marge');
return 0;
},
realm => 'Evergreen Terrace'
}
);
# in your routes
sub index {
my $self = shift;
return unless $self->basic_auth(\%options);
$self->render();
}
# or bridged
my $foo = $r->bridge('/bridge')->to(cb => sub {
my $self = shift;
# Authenticated
return unless $self->basic_auth({realm => 'Castle Bridge', validate => sub {return 1;}});
});
$foo->route('/bar')->to(controller => 'foo', action => 'bar');
Mojolicious::Plugin::HttpBasicAuth is a implementation of the Http-Basic-Authentication
Mojolicious::Plugin::HttpBasicAuth supports the following options.
$self->plugin('http_basic_auth', {realm => 'My Castle!'});
HTTP-Realm, defaults to 'WWW'
$self->plugin('http_basic_auth', {
validate => sub {
my $c = shift;
my $loginname = shift;
my $password = shift;
my $realm = shift;
return 1 if($realm eq 'Springfield' && $loginname eq 'Homer' && $password eq 'Marge');
return 0;
}
});
Validation callback to verify user. This option is mandatory.
$self->plugin('http_basic_auth', {
invalid => sub {
my $controller = shift;
return (
json => { json => { error => 'HTTP 401: Unauthorized' } },
html => { template => 'auth/basic' },
any => { data => 'HTTP 401: Unauthorized' }
);
}
});
Callback for invalid requests, default can be seen here. Return values are dispatched to "respond_to" in Mojolicious::Controller
Mojolicious::Plugin::HttpBasicAuth implements the following helpers.
return unless $self->basic_auth({realm => 'Kitchen'});
All default options can be overwritten in every call.
Mojolicious::Plugin::HttpBasicAuth inherits all methods from Mojolicious::Plugin and implements the following new ones.
my $route = $plugin->register(Mojolicious->new);
my $route = $plugin->register(Mojolicious->new, {realm => 'Fort Knox', validate => sub {
return 0;
}});
Register renderer and helper in Mojolicious application.
Mojolicious, Mojolicious::Guides, http://mojolicio.us.
Patrick Grämer [email protected] , http://graemer.org.
Markus Michel [email protected] , http://markusmichel.org.
Copyright 2015 Patrick Grämer
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.