Subclassing Apache::AuthDBI
am 07.12.2009 02:59:24 von Tosh Cooey
I'm trying to subclass Apache::AuthDBI by doing:
package MyAuthDBI;
use base "Apache::AuthDBI";
1;
Then in apache.conf
PerlModule MyAuthDBI
AuthType Basic
PerlAuthenHandler MyAuthDBI::authen
....
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/
Re: Subclassing Apache::AuthDBI
am 08.12.2009 23:19:37 von Tosh Cooey
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
>
> AuthType Basic
> PerlAuthenHandler MyAuthDBI::authen
> ...
>
>
> 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/