Authentication plugin for http::server::simple
package MyServer; use base qw( HTTP::Server::Simple::Authen HTTP::Server::Simple::CGI); use Authen::Simple::Passwd; sub authen_handler { Authen::Simple::Passwd->new(passwd => '/etc/passwd'); } sub handle_request { my($self, $cgi) = @_; my $user = $self->authenticate or return; ... } MyServer->new->run();
HTTP::Server::Simple::Authen is an HTTP::Server::Simple plugin to allow \s-1HTTP\s0 authentication. Authentication scheme is pluggable and you can use whatever Authentication protocol that Authen::Simple supports.
You can use \*(C`authenticate\*(C' method whatever you want to authenticate the request. The method returns $username taken from the request if the authentication is successful, and \*(C`undef\*(C' otherwise. The code in \*(L"\s-1SYNOPSIS\s0\*(R" requires authentication for all the requests and behaves just the same as Apache's \*(C`Require valid-user\*(C'.
The following code will explain more about conditioning.
sub handle_request { my($self, $cgi) = @_; if ($cgi->path_info =~ m!/foo/!) { my $user = $self->authenticate; return unless defined($user) && length($user) == 8; } ... }
This means all the requests to \s-1URL\s0 \*(C`/foo/\*(C' require to be authenticated, and usernames with 8 chars long are authorized.
Your subclass has to override following methods to implement \s-1HTTP\s0 authentication.
Should return a valid Authen::Simple instance to authenticate \s-1HTTP\s0 request (Required).
Returns a string for Authentication realm to be shown in the browser's dialog box. Defaults to 'Authorized area'.
Tatsuhiko Miyagawa <[email protected]>
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
HTTP::Server::Simple, Authen::Simple