I'm enjoying talking to myself here all month! So the solution to my problem below...

Yay to MidLifeXis on PerlMonks for pointing out the problem.

When MyAuthDBI::authen is called then PERL looks to that specific object for the function rather than traversing up the parent tree. MyAuthDBI->authen would call the function but the original Apache::AuthDBI::authen expects $r as the first argument and not $self and so a new set of problems arises.

So the easy solution to this problem is:

package MyAuthDBI;
use base "Apache::AuthDBI";
sub authen {
  my ($r) = @_;
  Apache::AuthDBI::authen($r);
}
1;

To answer my final question, yes I was doing something glaringly dumb :)

Tosh


Tosh Cooey wrote:
I'm trying to subclass Apache::AuthDBI by doing:

package MyAuthDBI;

use base "Apache::AuthDBI";
1;


Then in apache.conf

PerlModule MyAuthDBI
<Location /test>
  AuthType Basic
  PerlAuthenHandler MyAuthDBI::authen
...
</Location>

I'm getting the following error:

...failed to resolve handler `MyAuthDBI::authen': Can't locate MyAuthDBI/authen.pm in @INC...

Which kinda makes sense as an error message since the handler is declared MyAuthDBI::authen and not MyAuthDBI->authen and yet it works just fine if I allow Apache::AuthDBI to handle the Authen.

Is it non trivial to subclass Apache::AuthDBI? Am I doing something glaringly dumb?

Thanks again...

Tosh


--
McIntosh Cooey - Twelve Hundred Group LLC - http://www.1200group.com/

Reply via email to