← Back to team overview

sslug-teknik team mailing list archive

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