Isn't the first object passed the class it self if you use method-style. The error message seems to say this ;-)
sub handler {
my $self = shift;
my $r = shift;
...
}
Tom
John Russell wrote:
> Hi,
>
> I'm trying to migrate from MP1 to MP2 and having trouble with
>
> get_basic_auth_pw and note_basic_auth_failure
>
> which can not be found ..
>
> <Location /db>
> ...
> AuthName Database
> AuthType Basic
> PerlAuthenHandler Xdb::AuthOra2->handler
> require valid-user
> PerlResponseHandler Xdb::ApacheDB->handler
> SetHandler perl-script
> </Location>
>
>
> package Xdb::AuthOra2;
>
> use strict;
>
> use Apache2::Access ();
> #use Apache2::RequestUtil ();
> use Apache2::Const -compile => qw (OK DECLINED REDIRECT
> HTTP_UNAUTHORIZED);
> use Apache2::ServerUtil ();
> #use APR::URI ();
> #use Apache2::RequestRec();
>
> sub handler {
> my $q = shift;
>
> # get_basic_auth_pw not being found, temporarily comment out
> #my ($status, $sent_pw) = $q->get_basic_auth_pw();
> #return $status unless $status == Apache2::Const::OK;
>
> my $sent_pw = 'scott';
> my $user = 'tiger';
>
> #my $user = $q->user();
>
> unless ($user and $sent_pw) {
> $q->note_basic_auth_failure;
> #$q->log_reason("Both a username and password must be provided",
> # $q->filename);
> return Apache2::Const::HTTP_UNAUTHORIZED;
> }
>
> my $reason = authenticate($q, $user, $sent_pw);
>
> if ($reason) {
> $q->note_basic_auth_failure;
> #$q->log_reason($reason, $q->filename);
> return Apache2::Const::HTTP_UNAUTHORIZED;
> }
> return Apache2::Const::OK;
> }
>
> sub authenticate {
>
> my $r = shift;
> my $username = shift;
> my $password = shift;
>
> my $authok;
>
> ...
>
> if ($authok != 1) {
> return "Your request was not authorized.\n";
> }
>
> }
>
>
> 1;
> __END__
>
>
> this fails at run time with
>
> Can't locate object method "note_basic_auth_failure" via package
> "Xdb::AuthOra2" at /home/httpd/ph/Xdb/AuthOra2.pm line 34.
>
> The module appears to be present
>
> # find /usr/lib/perl5 -name Access.pm
> /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi/Apache2/Access.pm
>
> # ls /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi/auto/
> Apache2/Access
> Access.bs Access.so
>
> Any suggestions why the Apache2::Access functions are unavailable
> would be most helpful, TIA.
>
> John.
>
>
>
signature.asc
Description: OpenPGP digital signature
