sslug-teknik team mailing list archive
-
sslug-teknik team
-
Mailing list archive
-
Message #18153
Apache/CGI og status koder
Jeg har et lille problem med et cgi-program, som I måske kan hjælpe med.
Problemstillingen er at jeg gerne vil lave manuel adgangskontrol, så jeg
har brugernavne i en applikationsspecifik database. Jeg vil derfor
sende et 401 kode tilbage til browseren, og så manuelt kontrollerer
password og brugernavn mod min database. Det virker, men i serverloggen
står der alligevel 200 som status kode for det første request.
Programmet er vedhæftet, det er ganske lille. For nuværende skriver det
blot brugernavn og password ud.
Når jeg tester det, får jeg følgende i access_log, men det virker
alligevel, dvs der promptes for password.
localhost - - [04/Feb/2000:14:30:52 +0100] "GET /nph-auth.cgi HTTP/1.0"
200 -
localhost - - [04/Feb/2000:14:30:56 +0100] "GET /nph-auth.cgi HTTP/1.0"
200 82
Jeg bruger Apache 1.3.9, mod_perl 1.21, CGI 2.46.
--
René Seindal (rene@xxxxxxxxxx) http://www.seindal.dk/rene/
#!/usr/bin/perl -w
use CGI;
use Apache;
use MIME::Base64;
&main(new CGI());
exit(0);
sub main {
my ($q) = @_;
my $r = Apache->request;
my $auth = $r->header_in('Authorization');
if ($auth) {
print $q->header('text/plain', '200 OK');
print("ACCESS OK\n");
print("Debug output\n");
print("Authorization: $auth\n");
my ($user, $pw) = split(/:/, decode_base64(substr($auth, 6)));
print("User $user, Password $pw\n");
} else {
print $q->header(-type=>'text/plain',
-nph=>1,
-status=>'401 Unauthorized',
-WWW_Authenticate=>'Basic realm="hej"');
print("You need a password\n");
}
}
Follow ups