I am having some serious problems with a custom AuthenHandler. Basically, 
it looks up users/passwords/groups in a database. The problem is whenever I 
encounter a bad password/username, I want the dialog box to reappear asking 
for them. Instead, the 401 error page is being displayed.  Below is the 
config and most of the code:

<Location /php/show.gleim.com>
     Options Indexes ExecCGI
     PerlAuthenHandler Apache::AuthDir
     AuthType Basic
     AuthName "show.gleim.com"
     require valid-user
</Location>



package Apache::AuthDir;

use Apache::Constants qw(:common);

use DBI;
$dbh = DBI->connect('DBI:mysql:SGC');

sub handler {

     $req = shift;

     return OK unless $req->is_initial_req;

     my( $res, $passwd ) = $req->get_basic_auth_pw();
     return $res if $res != OK;

     my $user = $req->connection->user;
     my $uri = $req->uri;
     my $subr = $req->lookup_uri($uri);
     my $filename = $subr->filename;

     # Matches /php/show.gleim.com/(oranges/)
     $uri =~ /^\/php\/show.gleim.com\/(.*)$/;
     $dir = $1;

     #$req->server->log_error("$dir - $user - $passwd");

     # check user and password
     if ( ! checkPassword($user, $passwd) ) {
         $req->note_basic_auth_failure;
         return AUTH_REQUIRED;
     }

     if (-d $filename) {
         # Remove any trailing /
         $dir =~ s/\/$//;

         # check user and directory
         if (! checkDirectory($user, $dir) ) {
             #$req->server->log_error("$user tried to access $dir but 
couldnt");
             return FORBIDDEN;
         }
     }

     if (-f $filename) {
         if (! checkFile($user, $file) ) {
             #$req->server->log_error("$user tried to access $file but 
couldnt");
             return FORBIDDEN;
         }
     }

     # Else they are OK
     $req->connection->auth_type('Basic');
     $req->connection->user($user);
     return OK;
}

____________________________________
Dave Greco
[EMAIL PROTECTED]
Network Administrator
Gleim Publications, Inc.
(800) 87-GLEIM x312
http://www.gleim.com
____________________________________

Reply via email to