Hi,
I found the answer on another perl mongers list.
I needed to swap the user and passwd. $r->user isn't available until
after $r->get_basic_auth_pw has been called.
Cheers!
George
Matthew Whipple wrote:
It appears as though the user method only returns a value after
successful authentication while you're trying to get it before.
George wrote:
Hello All,
I'm having a problem with modperl and I can't figure out if it's my
stupiditry or modperls'. I'd love somebody with some modperl foo to
give me a hand.
First, the config:
rembox# cat /etc/redhat-release
Red Hat Enterprise Linux ES release 4 (Nahant Update 4)
rembox# rpm -qa | egrep 'http|mod_perl'
httpd-2.0.52-32.3.ent
httpd-devel-2.0.52-32.3.ent
mod_perl-1.99_16-4.5
httpd-suexec-2.0.52-32.3.ent
rembox# cat /etc/httpd/conf.d/perl.conf | egrep -v "^#"
LoadModule perl_module modules/mod_perl.so
Alias /perlremedy /opt/arsperl/scripts/htdocs/
PerlModule ModPerl::Registry
PerlSwitches -I/opt/arsperl/scripts/htdocs/sec/
PerlModule Apache::compat
<Directory /opt/arsperl/scripts/htdocs/*.pl>
SetHandler perl-script
PerlResponseHandler ModPerl::Registry
Options ExecCGI
PerlOptions +ParseHeaders
</Directory>
<Directory /opt/arsperl/scripts/htdocs/sec/>
SetHandler perl-script
PerlResponseHandler ModPerl::Registry
PerlAuthenHandler My::AuthTest
Options ExecCGI
PerlOptions +ParseHeaders +GlobalRequest
AuthType Basic
AuthName "Remedy access"
Require valid-user
</Directory>
<Location /perl-status>
SetHandler perl-script
PerlResponseHandler Apache::Status
Order deny,allow
Deny from all
Allow from .your-domain.com
</Location>
Here's the contents of My::AuthTest:
package My::AuthTest;
use Data::Dumper;
use Apache::Access;
use Apache::Const -compile => qw(OK DECLINED HTTP_UNAUTHORIZED);
use strict;
sub handler {
my $r = shift ;
open (FOO, ">/tmp/foo.george");
# get the client-supplied credentials
my $username = $r->user;
my ($status, $password) = $r->get_basic_auth_pw;
print FOO Dumper($username);
print FOO Dumper($password);
print FOO Dumper($status);
close FOO;
# only continue if Apache says everything is OK
return $status unless $status == Apache::OK;
# Until we figure how to get the username, lets just return OK.
return Apache::OK;
}
1;
That handler lets the auth through so it's somewhat working. The
problem is $username is undef so I can't actually test a login or
anything. If I try get access to it from a script that's run after
the auth (ie, the actual request), then it's not blank and I can see
the username. I've also tried $r->connection->user;
I've read a whole bunch of the docs, but what seems to be provided by
RedHat bears to reference to what's on the interweb.
Can somebody tell me what I'm missing?
Cheers!
George
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
http://learn.perl.org/